首页 > 解决方案 > Yii 2 Swiftmailer 电子邮件进入垃圾邮件

问题描述

我正在使用 Swiftmailer 发送 HTML 和有时是文本电子邮件。电子邮件有时会出现在收件人的垃圾邮件文件夹中。我正在使用 SMTP 传输连接到远程邮件服务器以发送电子邮件。

我们有一个托管在域上的网络应用程序,它将连接到用户的电子邮件地址并进行身份验证,然后发送电子邮件。

我似乎无法弄清楚为什么有些电子邮件最终会出现在垃圾邮件或垃圾邮件文件夹中?

这是我的 Swiftmailer 配置代码:

    'mailer' => [
        'class' => 'yii\swiftmailer\Mailer',
        'useFileTransport'=>false,
        'transport' => [
            'class' => 'Swift_SmtpTransport',
            'host' => 'mail.thehostname.com',
            'username' => 'system@thehostname.com',
            'password' => 'PASSWORD_HERE',
            'port' => '465',
            'encryption' => 'ssl',
             'streamOptions' => [ 'ssl' =>
                    [ 'allow_self_signed' => true,
                        'verify_peer' => false,
                        'verify_peer_name' => false,
                    ],
                ],
        ],
    ],

在发送实际电子邮件时 - 这就是我设置消息的方式:

        //set up the transport
        $transport = Yii::$app->mailer->getTransport();
        if($user->smtp_port=="587")
        {
            $transport
                ->setUserName($user->email)
                ->setPassword($user->imappassword)
                ->setHost($user->smtp_url)
                ->setPort($user->smtp_port)
                ->setEncryption('tls');                    
        } else {
            $transport
                ->setUserName($user->email)
                ->setPassword($user->imappassword)
                ->setHost($user->smtp_url)
                ->setPort($user->smtp_port)
                ->setEncryption('ssl');     
        }

        //setup headers
        $mid = "<".time()." TheSystem@".$_SERVER['SERVER_NAME'].">";
        $message->getSwiftMessage()->getHeaders()->addTextHeader('Organization', $user->company->name);
        $message->getSwiftMessage()->getHeaders()->addTextHeader('MIME-Version', '1.0');
        $message->getSwiftMessage()->getHeaders()->addTextHeader('X-Mailer', 'PHP v' . phpversion());
        $message->getSwiftMessage()->getHeaders()
        ->addParameterizedHeader('Content-type', 'text/html', ['charset' => 'utf-8']);
        $message->getSwiftMessage()->getHeaders()->addTextHeader('Message-ID', $mid);

        $message
            ->setFrom([$user->email=>$user->fullname]);

从这一点开始,$message 被传递并根据需要使用以添加文本/HTML 内容,然后调用 $message->send()

我的标题正确吗?它会导致邮件进入垃圾邮件吗?

我已经浏览了 Stackoverflow 并添加了我在其他 stackoverflow 帖子中找到的标题。这似乎有点帮助,但邮件仍然会成为垃圾邮件。

我希望我的邮件不会进入垃圾邮件或垃圾邮件。

任何建议将不胜感激

谢谢!

标签: yii2swiftmailerspam

解决方案


推荐阅读