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