xepan/mail

Nette Mail: 发送电子邮件

v2.3.5 2016-04-10 12:50 UTC

README

Downloads this Month Build Status Latest Stable Version License

几乎每个Web应用程序都需要发送电子邮件,无论是新闻通讯还是订单确认。这就是为什么Nette框架提供了必要的工具。

使用 Nette\Mail\Message 类创建电子邮件的示例

use Nette\Mail\Message;

$mail = new Message;
$mail->setFrom('John <john@example.com>')
	->addTo('peter@example.com')
	->addTo('jack@example.com')
	->setSubject('Order Confirmation')
	->setBody("Hello, Your order has been accepted.");

所有参数都必须以UTF-8编码。

并发送

use Nette\Mail\SendmailMailer;

$mailer = new SendmailMailer;
$mailer->send($mail);

除了使用 addTo() 指定收件人外,还可以使用 addCc() 指定副本收件人,以及使用 addBcc() 指定密件收件人。在这些方法中,包括 setFrom(),我们都可以用三种方式指定收件人

$mail->setFrom('john.doe@example.com');
$mail->setFrom('john.doe@example.com', 'John Doe');
$mail->setFrom('John Doe <john.doe@example.com>');

可以使用 setHtmlBody() 方法定义HTML内容

$mail->setHTMLBody('<b>Sample HTML</b> <img src="background.gif">');

可以使用 $mail->addEmbeddedFile('background.gif') 插入嵌入图像,但这不是必需的。为什么?因为Nette框架会自动查找并插入HTML代码中引用的所有文件。可以通过将 FALSE 作为 setHtmlBody() 方法的第二个参数添加来抑制这种行为。

如果HTML电子邮件没有纯文本替代,它将自动生成。如果没有设置主题,它将从 <title> 元素中获取。

当然,也可以向电子邮件添加附件

$mail->addAttachment('example.zip');

电子邮件发送还能更简单吗?

自定义邮件发送器

默认邮件发送器使用PHP函数 mail。如果您需要通过SMTP服务器发送邮件,可以使用 SmtpMailer

$mailer = new Nette\Mail\SmtpMailer(array(
        'host' => 'smtp.gmail.com',
        'username' => 'john@gmail.com',
        'password' => '*****',
        'secure' => 'ssl',
));
$mailer->send($mail);

您还可以创建自己的邮件发送器 - 它是一个实现了Nette\Mail\IMailer接口的类。