可以在localhost上使用swiftMailer发送电子邮件吗?

时间:2015-03-01 01:25:50

标签: php yii2 swiftmailer

我目前没有收到使用以下配置的电子邮件,并想知道是否与我的设置有关,可能会遗漏某些东西,或者它在MAMP localhost上无效?

通用配置目录中的

main-local.php

    'mailer' => [
        'class' => 'yii\swiftmailer\Mailer',
        'viewPath' => '@common/mail',
        // send all mails to a file by default. You have to set
        // 'useFileTransport' to false and configure a transport
        // for the mailer to send real emails.
        'useFileTransport' => true,
    ],

然后发送电子邮件(显示成功消息)

public function submitreview($email)
{
    //return Yii::$app->mailer->compose(['html' => '@app/mail-templates/submitreview'])
    return Yii::$app->mailer->compose()
        ->setTo($email)
        ->setFrom([$this->email => $this->name])
        ->setSubject($this->title)
        ->setTextBody($this->description)
        ->attachContent($this->file)
        ->send();
}

3 个答案:

答案 0 :(得分:3)

您可以通过以下配置在Yii2中通过localhost发送邮件。

'mailer' => [
        'class' => 'yii\swiftmailer\Mailer',
        'useFileTransport' => false,
        'transport' => [
            'class' => 'Swift_SmtpTransport',
            'host' => 'smtp.gmail.com',  
            'username' => 'ENTER_EMAIL_ADDRESS_HERE',
            'password' => 'ENTER_PASSWORD',
            'port' => '587', 
            'encryption' => 'tls', 
        ],
    ]

并在您的控制器中

\Yii::$app->mail->compose('your_view', ['params' => $params])
    ->setFrom([\Yii::$app->params['supportEmail'] => 'Test Mail'])
    ->setTo('to_email@xx.com')
    ->setSubject('This is a test mail ' )
    ->send();

答案 1 :(得分:2)

我只是使用gmail进行测试,使用这个php文件从本地主机发送邮件。 当您要进行制作时,请使用原始凭据替换传输文件。

如果邮件成功发送,$ result将回显1

<?php
            $subject="Testing Mail";
            $body="<h2>This is the body</h2>";
            $to="*******@gmail.com";  //this is the to email address

            require_once 'swiftmailer/swift_required.php';
            // Create the mail transport configuration

            $transport = Swift_SmtpTransport::newInstance('smtp.gmail.com', 465, 'ssl')->setUsername('######')->setPassword('######');
            //$transport = Swift_MailTransport::newInstance();
            $message = Swift_Message::newInstance()
            ->setSubject($subject)
            ->setFrom(array('######@gmail.com'))
            ->setTo(array($to))
            ->setBody($body,'text/html');

            //send the message 
            $mailer = Swift_Mailer::newInstance($transport);         
            $result=$mailer->send($message);

    ?>

答案 2 :(得分:0)

useFileTransport设置为true时(在开发环境中为默认值),邮件将作为文件保存在&#39;运行时&#39;文件夹中。

例如,如果您在站点的后端使用高级启动器模板并注册为用户(并使用发送用户注册电子邮件的扩展名),则注册电子邮件将保存在/backend/runtime/mail