PHP发送邮件是很常见的一个功能,之前在写项目中同样遇到这类需求,遇到之后首选方案是使用PHPMailer进行处理,不过在实际使用中,解决了各类问题遇到了最后一个参数为0的错误,谷歌解决方案为重装PHP,只能弃用。之后搜索找到swiftmailer插件,官方地址为:http://swiftmailer.org
github地址https://github.com/swiftmailer/swiftmailer,话不多说直接上代码
/**
* 发送邮件
*
* @param string $body 消息
* @param $subject 主题
* @param $to 收件人
* @return int
*/
function sendMail($body = '',$subject , $to)
{
$transport = \Swift_SmtpTransport::newInstance('220.181.12.12', 465, 'ssl');
$transport -> setUsername('*******@163.com');
$transport -> setPassword('******'); //该密码为smtp密码具体自行百度设置
$mailer = \Swift_Mailer::newInstance($transport);
$message = \Swift_Message::newInstance();
$message -> setSubject($subject);
$message -> setFrom(array('******@163.com'=>'1111111'));
$message -> setTo(array($to));
$message -> setBody($body);
// $message ->setPart('');
// $message ->attach(''); //附件
$result = $mailer->send($message);
// printf("Sent %d messages\n", $result);
return $result;
}
在使用前需要在控制器引入
require_once(dirname(dirname(dirname(__FILE__))) . '/FrontendBundle/swiftmailer-5.x/lib/swift_required.php');
require_once(dirname(dirname(dirname(__FILE__))) . '/FrontendBundle/swiftmailer-5.x/lib/swift_init.php');
在使用中需要注意几点,其中使用的密码均为发信邮箱的smtp密码。具体到各个邮箱 百度一下都有详细的设置方法,这里也就不在多说,其中,220.181.12.12 为使用邮箱的SMTP服务器地址,正常的地址应当是smtp.***.com,但是在实际使用中你会发现很多情况下出现无法访问的错误,百度后得知目前一般为IPV6地址导致无法连接,解决方案就ping服务器获取IPV4地址进行替换.220.181.12.12则为smtp.163.com的地址,端口号465。
这样一个简单发送纯文字的方法就搞定了。因为目前项目中使用的也只有文字功能,当然图片,附件的方法在官方文档中都有详细的代码示例。
转载时请注明出处及相应链接,本文永久地址:https://blog.yayuanzi.com/18870.html
微信打赏
支付宝打赏
感谢您对作者Pota的打赏,我们会更加努力! 如果您想成为作者,请点我