1

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

我目前通过 Google Apps 设置了我的电子邮件,所以 SMTP 可能不适用于这种情况?如果是这样,你建议我如何从 SMTP 更改它。

此外,每当我发送这样的电子邮件时,它都会在用户名区域显示一个发件人地址。我希望它与“setFrom”函数中的发件人地址一起显示。

//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);

非常感谢您的帮助!

4

3 回答 3

1

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

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

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

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

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

于 2011-01-21T15:01:22.123 回答
1

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

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

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

  1. 打开 ssh 隧道 (ssh -2NfCT -D 5000 yoursshuser@yourdomain.org)
  2. 配置您的浏览器以使用该代理(例如 Firefox :to Preferences > Advanced > Network > Settings > Manual proxy configuration > SOCKS Hosts: localhost / Post: 5000 / SOCKS v5 )
  3. 像往常一样登录到您的 gmail 帐户

Symfony 输出的错误是:

app.ERROR: Exception occurred while flushing email queue: Failed to authenticate on SMTP server with username "joe.doe" using 1 possible authenticators [] []
于 2015-12-15T12:44:45.343 回答
0

好吧,这是解决方案。

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

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

于 2013-11-07T07:45:29.687 回答