在php和本地邮件服务器hMailServer中使用SwiftMailer包。 Php代码:
<?php
require 'vendor/autoload.php';
$message=Swift_Message::newInstance();
$message->setFrom('webmaster@mail.com');
$message->setTo(array('testmail@mail.com'=>'Ilqar Rasulov'));
$message->setSubject('Delicious New Recipe');
//$message->setBody(<<<_TEXT_
//Dear James,
//You should try this: puree 1 pound of chicken with two pounds
//of asparagus in the blender, then drop small balls of the mixture
//into a deep fryer. Yummy!
//Love,
//Julia
//_TEXT_
//);
$message->addPart(<<<_TEXT_
<p>Dear James,</p>
<p>You should try this:</p>
<ul>
<li>puree 1 pound of chicken with two pounds
of asparagus in the blender</li>
<li>then drop small balls of the mixture into a deep fryer.</li>
</ul>
<p><em>Yummy!</em></p>
<p>Love,</p>
<p>Julia</p>
_TEXT_
, "text/html");
try{
$transport= Swift_SmtpTransport::newInstance('localhost',25);
$mailer= Swift_Mailer::newInstance($transport);
$mailer->send($message);
} catch (Exception $ex){
print $ex->getMessage();
}
我配置了hMailServer并分配了密码(管理员和帐户密码)。所以问题是为什么swiftmailer只需要主机名和密码来完成它的工作,并且不需要验证?因为我不记得我在任何配置文件中存储了用户名和密码。
答案 0 :(得分:2)
要从hMailServer发送电子邮件,您需要创建一个这样的传输对象(如here所述):
// Create the Transport the call setUsername() and setPassword()
$transport = Swift_SmtpTransport::newInstance('smtp.example.org', 25)
->setUsername('username')
->setPassword('password')
;
// Create the Mailer using your created Transport
$mailer = Swift_Mailer::newInstance($transport);
另请注意,您需要将smtp.example.org
,username
和passwort
替换为hMailServer的相应设置。
目前,您的脚本不会通过hMailServer发送电子邮件,而是通过php mail() function从脚本所在的服务器发送电子邮件。您可以将任何FROM
地址与mail()
功能一起使用,但许多电子邮件提供商会将此识别为垃圾邮件。所以创建一个传输对象是一个好主意。