用PHP发送MIME邮件(三)
mime
MIME 类
在有了这些基础之后,让我们用PHP创建和实现一个MIME邮件类。在我们的PHP库函数中,已经有了编码
所必须的工具。
MIME类必须能够:
增加附件
对每一个独立的请求,对所附的数据进行编码
创建MIME段/头
生成一个包含MIME段/头的完整的邮件
将整个邮件作为字符串返回
用本地的邮件处理程序进行发送(或选择调用一个SMTP邮件处理程序)
这个类叫做MIME_mail。我们将讨论类的方法,在理论与实际的差距中建立起桥梁。(阅读建议:Luis
Argerich的PHP的面向对象编程:开发大型PHP项目的方法)。为了便于阅读大部分的注释已经被去掉了。一
些方法与类的成员变量只是用于内部处理,并且已经在下面的注释中被指出来了(同时在初始的类文件中也
指出了)。
class MIME_mail {
//公有:
var $to;
var $from;
var $subject;
var $body;
var $headers = "";
var $errstr="";
var $base64_func= ''; // 如果未指定使用PHP的base64函数
var $qp_func = ''; // 此时为空
var $mailer = ""; // 将其设为有效的邮件对象的名字
?>
这里有一些公共处理的变量(也就是,可以在脚本中直接操纵的变量)。这些变量中的大部分都是自说
明的。$headers包含了可选的想要发送给邮件处理程序的头信息。$errstr
是一个包含可读错误字符串的变
量,它可以用在调用脚本中。
$base64_func和$qp_func是"函数处理器",用户可以进行定制。缺省地,它们被设为空串。对于$base64_func,一个空串意味着我们将使用PHP内置的base64_encode()函数...(是的!优美,不是吗!)。
Quoted Printable可以通过$qp_func被处理。在PHP中没有内置的quoted-printable
编码函数(然而,安装
了imap则可以使用imap_qprint())。在这篇文章中我们将不再讨论quoted_printable方法。
//私有:
var $mimeparts = array();
?>
$mimeparts是一个内部数组,包含了邮件信息中各自独立的符合MIME段。请不要在这个类(或派生类)之外操纵它和其它的私有方法/变量。
// 构造函数
function MIME_mail($from="", $to="", $subject="",
$body="", $headers = "") {
$this->to = $to;
$this->from = $from;
$this->subject = $subject;
$this->body = $body;
if (is_array($headers)) {
if (sizeof($headers)>1)
$headers=join(CRLF, $headers);
else
$headers=$headers[0];
}
if ($from) {
$headers = preg_replace("!(from: ?.+?[
]?)!i", '', $headers);
}
$this->headers = chop($headers);
$this->mimeparts[] = "" ; //增加位置0
return;
}
?>
我们拥有对象的构造函数,它使用"from"和"to"邮件地址,主题和邮件体和头作为参数。对于邮件体部
分,可以给出你将可能输入的正常邮件。最后一个参数是可选的(用户自定义)头。例如,X-Mailer:
MyMailer_1.0。请注意$headers可以是一个数组,包含了将要发给邮件发送程序的不同的头,或者只是某个
特别头的容器。你不能在$headers参数中发送From:
头,如果它被找到,这部分将自动被去掉。你可以象下
面使用多个头:array("X-Mailer: MYMailer_1.0",
"X-Organization: PHPBuilder.com")。
$mimeparts用一个空项(索引0)创建,在后面我们将看到这样用的道理。

핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

Video Face Swap
완전히 무료인 AI 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

이 글은 여러분에게 JavaScript에 대한 관련 지식을 제공합니다. 주로 var, let 및 const의 차이점과 ECMAScript와 JavaScript의 관계를 소개합니다. 관심 있는 친구들이 이 글을 살펴보는 것이 도움이 될 것입니다.

php提交表单通过后,弹出的对话框怎样在当前页弹出php提交表单通过后,弹出的对话框怎样在当前页弹出而不是在空白页弹出?想实现这样的效果:而不是空白页弹出:------解决方案--------------------如果你的验证用PHP在后端,那么就用Ajax;仅供参考:HTML code

오디오 출력 및 입력이 Windows 11에서 예상대로 작동하려면 특정 드라이버와 서비스가 필요합니다. 때때로 백그라운드에서 오류가 발생하여 오디오 출력 없음, 오디오 장치 누락, 오디오 왜곡 등과 같은 오디오 문제가 발생합니다. Windows 11에서 응답하지 않는 오디오 서비스를 수정하는 방법 아래 언급된 수정 사항부터 시작하여 문제가 해결될 때까지 목록을 살펴보는 것이 좋습니다. Windows 11에서는 여러 가지 이유로 오디오 서비스가 응답하지 않을 수 있습니다. 이 목록은 Windows 11에서 오디오 서비스가 응답하지 못하게 하는 대부분의 문제를 확인하고 해결하는 데 도움이 됩니다. 프로세스를 진행하는 데 도움이 되도록 아래 관련 섹션을 따르세요. 방법 1: 오디오 서비스를 다시 시작합니다.

PHP에서 var 키워드의 역할과 예 PHP에서는 var 키워드를 사용하여 변수를 선언합니다. 이전 PHP 버전에서는 var 키워드를 사용하는 것이 멤버 변수를 선언하는 관용적인 방법이었지만 더 이상 사용이 권장되지 않습니다. 그러나 어떤 경우에는 var 키워드가 계속 사용됩니다. var 키워드는 주로 지역 변수를 선언하는 데 사용되며 해당 변수는 자동으로 지역 범위로 표시됩니다. 즉, 변수는 현재 코드 블록 내에서만 볼 수 있으며 다른 함수나 코드 블록에서는 액세스할 수 없습니다. var 사용

안녕하세요, 다음은 FROM절에서 업데이트 대상 테이블을 지정할 수 없습니다'라는 제목의 1500자 이내의 기사입니다. - MySQL 오류 해결 방법: FROM 절에서 대상 테이블을 업데이트할 수 없습니다. 구체적인 코드 예제가 필요합니다. MySQL 데이터베이스를 개발하는 동안 때때로 다음과 같은 오류 메시지가 나타납니다. 지정할 수 없습니다.

오류 메시지가 나타나는 이유는 Python 코드에서 객체(self 변수로 표시됨)가 사용되지만 해당 객체에 k라는 속성이 없기 때문입니다. 이는 객체가 이 속성을 정의하지 않거나 코드의 유형 오류로 인해 객체가 예상 유형이 아니기 때문일 수 있습니다. 해결 방법 이 오류를 해결하려면 다음 중 하나 이상을 수행해야 할 수 있습니다. 코드에서 오류를 확인하고 self 변수가 참조하는 개체에 k라는 속성이 있는지 확인하세요. 코드에서 유형 오류가 있는지 확인하고 self 변수가 참조하는 객체가 예상된 유형인지 확인하세요. 속성이 누락된 경우 클래스에서 이 속성을 정의해야 합니다. k가 클래스에 정의되지 않은 속성이라고 확신하는 경우 tryException을 사용하세요.

llet, var 및 const는 각각 블록 범위 변수, 함수 범위 변수 및 상수를 나타냅니다. 자세한 소개: 1. 블록 범위에서 변수를 선언하는 데 사용됩니다. let을 사용하여 선언된 변수는 선언되기 전에는 액세스할 수 없습니다. 2. var는 키를 선언하는 데 사용됩니다. 변수. 선언된 변수는 함수 범위 또는 전역 범위에 있으며 블록 수준 범위에 의해 제한되지 않습니다. 3. 상수를 선언하는 데 사용됩니다. 변수는 선언 이후에 다시 할당할 수 있습니다. 등을 수정할 수 없습니다.

1. 크로스 도메인이란 무엇입니까? 브라우저의 동일 출처 정책(원본 출처 정책) 때문에 넷스케이프가 제안한 잘 알려진 보안 정책입니다. 이제 JavaScript를 지원하는 모든 브라우저는 이 정책을 사용하게 됩니다. 도메인 이름, 프로토콜, 포트는 동일합니다.) 요청 URL을 보내는 데 사용된 프로토콜, 도메인 이름, 포트 중 하나가 현재 페이지 주소와 다르면 크로스 도메인입니다. 자세한 내용은 다음 표를 참조하세요. 2. springboot가 도메인 간 문제를 해결하는 방법 1. 일반적인 도메인 간 요청 솔루션: ① 주석 @CrossOrigin(origins="http://127.0.0.1:8020",maxAge= 추가) 360 요청 인터페이스
