Swift Mailer遇到问题不发送消息

时间:2011-10-15 13:02:55

标签: php email swiftmailer

我遇到了swift邮件程序的问题,它没有向用户发送邮件我将库解压缩到我的网站中的 inc 文件夹,并为swift邮件程序创建了以下消息:

注意:如果您可以推荐除SwiftMailer之外的其他解决方案,请发表评论。

require_once 'inc/lib/swift_required.php';

    //Create the Transport
    $transport = Swift_SmtpTransport::newInstance('mail.mywebsite.com', 25)
    ->setUsername('info@mywebsite.com')
    ->setPassword('myPassword')
    ;

    $mailer = Swift_Mailer::newInstance($transport);

    //Define Message Subject
    $message = Swift_Message::newInstance('myWebsite Registration')

    //e-mail from
    ->setFrom(array('info@mywebsite.com' => 'myWebsite'))
    //e-mail to
    ->setTo(array('$email1' => '$username'))
    //e-mail body
    ->setBody('

    Message body Here

    ')
    ;

    $result = $mailer->send($message);

    //Show user message after message has been sent
    include_once 'msgToUser.php'; 
    exit();

我测试了它,我没有收到消息,我不明白为什么,我按照官方网站上的说明进行操作:http://swiftmailer.org/docs/sending.html

有人能说出问题是什么吗?

注意:之前我使用过PHP mail();功能来发送电子邮件,但它们被归类为垃圾邮件。如果可能,任何人都可以建议解决方案如何使用mail();并使电子邮件不是垃圾邮件?请不要建议:使用您的主机服务器而不是您的域名,例如而不是使用info@yourdomain.com使用info@yourhost.com。

3 个答案:

答案 0 :(得分:4)

我担心你的问题无法得到具体回答,因为除了具体的技术问题之外,你可以面对复杂的问题,需要触及多个不小的地方。

发送问题

首先,您可以使用SwitfMailer发送电子邮件,这应该“正常工作” tm 。但是,如果您正在使用的传输(如SMTP服务器未发送电子邮件)与SwiftMailer直接无关(因为它与PHP mail无关)。

但是,您可以使用SwitfMailer中的$result来查看SwiftMailer本身是否遇到发送电子邮件的任何错误。有关更多信息,请参阅SwiftMailer SMTP Troubleshooting (Archived Copy),以防您在使用SwiftMailer与SMTP服务器一起工作时遇到问题。

垃圾邮件问题

这不能具体回答。类似的问题会不时出现在SO上,但大多数情况下都没有具体回答,因为这个主题延伸了您的电子邮件的确切内容(电子邮件标题和正文垃圾邮件评分),从哪个服务器发送(IP地址)和基于主机名的垃圾邮件评分,例如黑名单以及主机名的DNS配置,请参阅SPF)和其他内容。

使用SwiftMailer可以提供帮助,因为您可以交换邮件程序后端,例如购买商业SMTP网关,专注于降低垃圾邮件的负担。然而,当我在其他一些答案/评论中写道:整个企业都在垃圾邮件上运行 - 在“坏”和“好”方面。因此,信任任何这些实体并不总是可取的。

相反,您可以开始了解电子邮件技术的工作原理,垃圾邮件评分的工作原理以及您可以采取哪些措施通过正确配置的SMTP服务器发送正确的电子邮件。这是一些工作,它不能作为答案在这里提供,因为它非常广泛。

答案 1 :(得分:0)

确保您的服务器允许SMTP连接,如果确实如此,请检查它是否在端口25上,而不是使用SSL。

然后,将代码包装在try / catch块上以捕获任何异常。

try {
echo '<pre>';
    $transport = Swift_SmtpTransport::newInstance('mail.mywebsite.com', 25)->setUsername('info@mywebsite.com')->setPassword('myPassword');
    $mailer = Swift_Mailer::newInstance($transport);
    $message = Swift_Message::newInstance('myWebsite Registration')
        ->setFrom(array('info@mywebsite.com' => 'myWebsite'))
        ->setTo(array('$email1' => '$username'))
        ->setBody('Message body Here');
    $result = $mailer->send($message);
print_r($result);
} catch (Exception $e) {
    echo $e->getMessage();
}

答案 2 :(得分:0)

尝试检查您的邮箱,当邮箱耗尽它的配额时,它不会发送任何电子邮件,我清理邮箱后,我的SMTP邮件帐户再次发送电子邮件。我通过CPANEL计划设置邮箱配额,没有人会向此邮箱发送回复,但电子邮件收件人发送了对此邮箱的回复并使邮箱已满。