该软件包已被废弃且不再维护。未建议替代软件包。

v2.4.0 2016-06-25 15:15 UTC

README

Downloads this Month Build Status Coverage 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([
        'host' => 'smtp.gmail.com',
        'username' => 'john@gmail.com',
        'password' => '*****',
        'secure' => 'ssl',
        'context' =>  [
            'ssl' => [
                'capath' => '/path/to/my/trusted/ca/folder',
             ],
        ],
]);
$mailer->send($mail);

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