【问题标题】:Why the smtp server doesn't send emails anymore?为什么 smtp 服务器不再发送电子邮件了?
【发布时间】:2013-02-25 06:32:50
【问题描述】:

我遇到了一个非常奇怪的问题。我正在通过我的网站向其他收件人发送电子邮件。它在 symfony 中,我对此非常陌生。这是我的代码

confg.yml

swiftmailer:
transport:  smtp
host:       smtp.gmail.com
encryption: ssl
username:   "myusername"
password:   "mypassword"
spool:     { type: memory }

这是我的表单功能

 public function formemailAction(Request $request)
 {
 // create a task and give it some dummy data for this example
        $newtask = new Task();
        $newtask->setsubject('add subject here');
        $newtask->setdescription("write your feed back here");
        $form = $this->createFormBuilder($newtask)
            ->add('subject', 'text')
            ->add('description', 'textarea')
            ->getForm();

 return $this->render('ServiceRequestBundle:Desk:shownotification.html.twig', array('form' => $form->createView(),
 ));
 }

在点击提交的表单中,我正在调用一个发送电子邮件的函数

public function sendemailAction()
  {
      $messages = \Swift_Message::newInstance()
          ->setSubject('again Notification Email')
          ->setFrom('myusername@gmail.com')
          ->setTo('username@gmail.com')
          ->setBody("we know that you dont know whats happening" )
      ;
      $this->get('mailer')->send($messages);

      return $this->render('ServiceRequestBundle:Desk:shownotification.html.twig');
  }

现在的问题是它工作正常。但在发送 4 到 5 封电子邮件后,它停止工作,我的电子邮件不再发送。我的第一个猜测是因为我一次又一次地调试我的应用程序,并且可能只是因为一次又一次地发送相同的电子邮件而发生这种情况。我关注这个tutorial如果是这样,那么我该如何解决这个问题,如果还有其他问题,请帮助我。

我检查了我的 php 错误日志,我发现了这个

#0 [internal function]: Symfony\Component\HttpKernel\Debug\ErrorHandler->handle(2, 'SessionHandler:...', 'C:\xampp\htdocs...', 558, Array)
#1 C:\xampp\htdocs\jts\app\cache\dev\classes.php(558): SessionHandler->write('tatrpm617uplo16...', '_sf2_attributes...')
#2 [internal function]: Symfony\Component\HttpFoundation\Session\Storage\Proxy\SessionHandlerProxy->write('tatrpm617uplo16...', '_sf2_attributes...')
#3 [internal function]: session_write_close()
#4 {main}
  thrown in C:\xampp\htdocs\jts\app\cache\dev\classes.php on line 

【问题讨论】:

  • sendemailAction() 第 1 行 Swift_Message 之前有一个额外的反斜杠。错字?
  • 我试过了,但还是不行我关注这个tutorial
  • 先尝试简单的 PHP 代码。试试mail()函数看看SMTP服务器是否正常工作。
  • 好的,我也使用简单的 php mail() 发送了一封电子邮件,同样的问题再次出现。我想我的 smtp 服务器停止工作。我现在该如何解决这个问题?
  • 您可能没有安装 SMTP 服务器。如果你很懒惰,请使用 Google 的邮件服务器。

标签: php symfony smtp symfony-forms


【解决方案1】:

我认为您需要中继,因为 Gmail 会认为它是垃圾邮件并可能会阻止您的地址。

您可以在 CentOS 上使用 PostFix,也可以在 windows 中安装 SMTP 服务器

CentOS http://www.postfix.org/

WINDOWS: 你可以下载 SMTP 服务器

http://www.microsoft.com/en-us/download/details.aspx?id=7887

并使用这些步骤进行配置

http://technet.microsoft.com/en-us/library/cc772058(WS.10).aspx

【讨论】:

    【解决方案2】:

    如果是 smtp 传输,请检查您的 php 日志,可能存在问题 在 gmail 上进行身份验证。您是否尝试过 tls 而不是 ssl

    您可以尝试通过自己的 smtp 服务器发送邮件:

    首先你应该检查你的服务器上是否有一个 smtp 服务器:

    netstat -tulpen | grep :25
    

    这应该返回类似这样的内容:

    tcp  0  0 0.0.0.0:25  0.0.0.0:* LISTEN  0  8485 1213/master
    

    如果没有,您可以尝试启动服务器。如果是后缀,则为:

    /etc/init.d/postfix start
    

    如果您仍然没有收到邮件,请检查

    /var/log/maillog
    

    可能是邮件无法投递,你应该多看看 邮件日志中的信息

    【讨论】:

    • 我正在使用 Windows。你能指定windows的路径吗??
    • 在 Windows 上安装邮件服务器要麻烦得多。您应该尝试让 smtp gmail 正常工作。尝试使用 tls 而不是 ssl。
    猜你喜欢
    • 1970-01-01
    • 2018-10-17
    • 1970-01-01
    • 1970-01-01
    • 2012-06-10
    • 2016-09-07
    • 1970-01-01
    • 1970-01-01
    • 2016-10-01
    相关资源
    最近更新 更多