Lavarel框架EmailSmtp邮箱发送函数 163邮箱开通SMTP教程

163邮箱如何开通SMTP?
Lavarel框架EmailSmtp邮箱发送函数 163邮箱开通SMTP教程_第1张图片
开通步骤:

如果您想在163邮箱中使用SMTP服务,需要先开通SMTP功能,具体步骤如下:

  1. 登录163邮箱账号,进入邮箱首页。
  2. 在邮箱首页上方,找到“设置”按钮,点击进入设置页面。
  3. 在设置页面中,选择“客户端授权密码”选项,进入授权密码页面。
  4. 在授权密码页面中,设置一个授权密码,并保存授权密码。这个授权密码相当于您在第三方邮箱客户端上使用的邮箱密码,不要泄露给他人,以免账号被盗用。
  5. 在授权密码页面中,找到SMTP服务的开通按钮,点击“开通”即可。开通成功后,您就可以使用163邮箱提供的SMTP服务了。
    需要注意的是,163邮箱SMTP服务的使用需要满足以下条件:
  6. 邮箱账号需要实名认证,否则无法开通SMTP服务。
  7. 每个账号每天最多可发送200封邮件,每封邮件大小不能超过10MB。
  8. SMTP服务的服务器地址为smtp.163.com,使用SSL加密,端口号为465。
  9. SMTP服务需要使用授权密码进行登录认证,不支持使用邮箱密码登录。


namespace Module\EmailSmtp\Admin\Controller;

use Illuminate\Routing\Controller;
use Illuminate\Support\Facades\View;
use ModStart\Admin\Layout\AdminConfigBuilder;
use ModStart\Core\Input\Response;
use ModStart\Form\Form;
use Module\EmailSmtp\Provider\SmtpMailSenderProvider;

class ConfigController extends Controller
{
    public function setting(AdminConfigBuilder $builder)
    {
        $builder->pageTitle('SMTP邮箱设置');
        $builder->switch('systemEmailEnable', '开启SMTP邮件发送');
        $builder->text('systemEmailSmtpServer', 'SMTP服务器地址');
        $builder->switch('systemEmailSmtpSsl', 'SMTP是否为SSL');
        $builder->text('systemEmailSmtpUser', 'SMTP用户');
        $builder->text('systemEmailSmtpPassword', 'SMTP密码');
        $builder->formClass('wide');
        return $builder->perform();
    }

    public function test(AdminConfigBuilder $builder)
    {
        $builder->pageTitle('邮件发送测试');
        $builder->text('email', '测试接收邮箱')->rules('required');
        $builder->formClass('wide');
        return $builder->perform(null, function (Form $form) {
            $data = $form->dataForming();
            $email = $data['email'];
            $sender = new SmtpMailSenderProvider();
            $content = View::make('module::EmailSmtp.View.mail.test', [])->render();
            $ret = $sender->send(
                $email,
                $email,
                '测试邮件',
                $content,
                []
            );
            if (Response::isError($ret)) {
                return Response::generateError('邮件发送失败:' . $ret['msg']);
            }
            return Response::generateSuccess('测试邮件成功发送到' . $email);
        });
    }


}



namespace Module\EmailSmtp\Provider;


use Illuminate\Support\Facades\Mail;
use ModStart\Core\Input\Response;
use ModStart\ModStart;
use Module\Vendor\Provider\MailSender\AbstractMailSenderProvider;

class SmtpMailSenderProvider extends AbstractMailSenderProvider
{
    const NAME = 'smtp';

    /**
     * SmtpMailSenderProvider constructor.
     */
    public function __construct()
    {
        $config = modstart_config();
        config([
            'mail' => [
                'driver' => 'smtp',
                'host' => $config->getWithEnv('systemEmailSmtpServer'),
                'port' => $config->getWithEnv('systemEmailSmtpSsl', false) ? 465 : 25,
                'encryption' => $config->getWithEnv('systemEmailSmtpSsl', false) ? 'ssl' : 'tls',
                'from' => [
                    'address' => $config->getWithEnv('systemEmailSmtpUser'),
                    'name' => $config->getWithEnv('systemEmailFromName', $config->getWithEnv('siteName') . ' @ ' . $config->getWithEnv('siteDomain'))
                ],
                'username' => $config->getWithEnv('systemEmailSmtpUser'),
                'password' => $config->getWithEnv('systemEmailSmtpPassword'),
            ]
        ]);
    }

    public function name()
    {
        return 'smtp';
    }


    public function send($email, $emailUserName, $subject, $content, $param = [])
    {
        try {
            Mail::send([], [], function ($message) use ($email, $emailUserName, $subject, $content) {
                if (ModStart::env() == 'laravel5') {
                    /** @var \Swift_Message $message */
                    $message
                        ->setTo($email, $emailUserName)
                        ->setBody($content, 'text/html')
                        ->setSubject($subject);
                } else {
                    /** @var \Illuminate\Mail\Message */
                    $message->to($email, $emailUserName)
                        ->subject($subject)
                        ->html($content);
                }

                //            if (!empty($param['attachment'])) {
                //                foreach ($param['attachment'] as $filename => $path) {
                //                    $message->attach($path, ['as' => $filename]);
                //                }
                //            }
            });
            return Response::generateSuccess();
        } catch (\Exception $e) {
            return Response::generateError('ERROR:' . $e->getMessage());
        }
    }

}

你可能感兴趣的:(lavarel,前端,服务器)