Swiftmailer在localhost上工作但不在生产中

时间:2011-01-20 20:55:01

标签: php html-email swiftmailer

在我的本地主机(Linux Mint OS)上,Swiftmailer可以正常使用以下代码,但每当我将它移动到我的服务器时,只是挂起发送功能,然后给我一个内部服务器错误。

我目前通过Google Apps设置了电子邮件,因此SMTP可能不适用于这种情况?如果是这样的话,你怎么建议我从SMTP改变它。

此外,每当我发送这样的电子邮件时,它都会显示用户名区域中的起始地址。我想让它出现在“setFrom”函数中的from地址。

//Include the swiftmailer class
require_once 'comm/swiftmailer/swift_required.php';

//Create a message
//Pass it as a parameter when you create the message
$message = Swift_Message::newInstance();
$message->setSubject('My Subject');
$message->setFrom(array('noreply@domain.com' => 'No Reply'));
$message->setTo(array('me@domain.com' => 'Me'));
$message->setBody($emailContent, 'text/html');

//Create transport class and email the message
$transport = Swift_SmtpTransport::newInstance('smtp.gmail.com', 465, 'ssl')->setUsername('useracctname')->setPassword('password');
$mailer = Swift_Mailer::newInstance($transport);
$result = $mailer->send($message);

非常感谢您的帮助!

3 个答案:

答案 0 :(得分:1)

这可能是服务器上的端口问题。可以关闭端口465以防止发送垃圾邮件。也可能是服务器的PHP版本缺乏SSL支持。

  

我想知道,可能是因为我没有使用本地邮件服务器所以它不允许SMTP?

如果你像你一样明确地处理gmail,你就不太可能使用其他传输类型或不同的服务器。

  

另外,使用其他传输类型之一呢?

我认为SMTP是您使用Gmail运行它的唯一选择。但是,它可能是您的服务器提供基于mail()的服务(显然,使用与GMail不同的发件人地址)。在这种情况下,您可以使用Swiftmailer的mail transport

答案 1 :(得分:1)

我遇到了同样的问题:我能够在本地发送gmail电子邮件(在更新配置后:https://www.google.com/settings/security/lesssecureapps),但未在生产中发送。

要解决我的问题,我已经使用我的生产服务器 /从我的生产服务器登录到我的gmail帐户,并回答了gmail安全问题。

使用您的生产IP登录您的Gmail帐户的解决方案之一是

  1. 打开ssh隧道(ssh -2NfCT -D 5000 yoursshuser@yourdomain.org)
  2. 配置浏览器以使用该代理(例如Firefox:到首选项>高级>网络>设置>手动代理配置> SOCKS主机:localhost / Post:5000 / SOCKS v5)
  3. 照常登录您的Gmail帐户
  4. Symfony输出的错误是:

    app.ERROR: Exception occurred while flushing email queue: Failed to authenticate on SMTP server with username "joe.doe" using 1 possible authenticators [] []
    

答案 2 :(得分:0)

嗯,这是解决方案。

如果您要发送SMTP邮件,则应在服务器上创建电子邮件帐户,然后在您的代码中使用此电子邮件信息。  如果您没有使用它发送的有效电子邮件帐户,服务器将不会发送电子邮件 当你使用“从”。  这应该是一个真正正确的电子邮件帐户,一个假的。

使用假帐户发送的唯一可能原因是使用mail()函数。