2.6.1 2024-02-12 05:10 UTC

README

使用PHP + IMAP & SMTP生成、发送和阅读邮件。

Latest Stable Version Total Downloads License PHPStan Enabled

特性

  • 编程
    • 简单、易用、简洁
    • PHP 7.3+,面向对象风格,可链式调用
    • 自动编码
    • 自动MIME类型检测
  • MIME内容
    • HTML
    • 纯文本
    • 文件附件
    • 内联图片
  • 参与者
    • 收件人、抄送、密送
    • 发件人和收件人姓名
  • 传输
    • SMTP,支持TLS
    • 本地PHP邮件函数
  • 邮箱
    • 通过IMAP和POP3访问
    • 按条件搜索
  • 检查
    • 地址有效性
    • 收件人可达性

代码示例

简短版本

此示例展示了如何使用链式调用发送文本邮件。

\CeusMedia\Mail\Transport\SMTP::getInstance("example.com", 587)
	->setAuth("john@example.com", "my_password")
	->send(\CeusMedia\Mail\Message::getInstance()
		->setSender("john@example.com", "John Doe")
		->addRecipient("mike@example.com", "Mike Foo")
		->setSubject("This is just a test")
		->addText("Test Message...")
	);

详细版本

use \CeusMedia\Mail\Message;
use \CeusMedia\Mail\Transport\SMTP;

$message	= new Message();
$message->setSender("john@example.com", "John Doe");
$message->addRecipient("mike@example.com", "Mike Foo");
$message->addRecipient("log@example.com", NULL, 'cc');
$message->addRecipient("spy@example.com", NULL, 'bcc' );

$message->setSubject("This is just a test");
$message->addText("Test Message...");
$message->addHTML('<h2><img src="CID:logo"/><br>Test Message</h2>');
$message->addInlineImage("logo", "logo.png");
$message->addFile("readme.md");

$transport	= new SMTP("example.com", 587);
$transport->setUsername("john@example.com");
$transport->setPassword("my_password");
$transport->setVerbose(TRUE);
$transport->send( $message );

未来计划

  • 现有解析器的文档
  • 自动病毒扫描
  • 支持日志记录
  • 工厂和其他设计模式
  • 瘦API - 请参阅“未来版本”

未来版本

发送邮件应尽可能简单。以下是未来接口可能的样子。

注意: 这段代码是伪代码。使用的类尚未实现。

use \CeusMedia\Mail\Client;

Client::getInstance("This is just a test")
	->from("john@example.com", "John Doe")
	->to("mike@example.com", "Mike Foo")
	->bcc("spy@example.com")
	->text("Test Message...")
	->auth("my_password")
	->port(587),
	->error("handleMailException")
	->send();

function handleMailException( $e ){
//  ...
}

对此示例的想法

  • 使用此简短代码发送邮件将仅使用SMTP。
  • SMTP服务器将通过获取用户域的MX记录来确定。
  • 仍需要设置SMTP服务器端口。
  • 分配的收件人将自动检查是否存在。
  • 如果认证方法只接收一个参数,它将被理解为密码。
  • 认证用户名将从发件人地址中获取。
  • 可以由定义的错误处理器捕获抛出的异常。
  • 如果一切设置正确,则可以发送邮件。

有用信息

使用Google作为SMTP

Google试图通过多项措施来保护其SMTP访问。如果您在使用Google SMTP发送邮件时遇到问题,请尝试以下步骤

  1. 打开浏览器并使用Google账户登录Google。
  2. 允许“不安全的应用”访问
  3. 允许应用访问
  4. 再试一次!