大家好,我是烤鸭:
之前用阿里云服务器的时候发送126企业邮箱,用的smtp方式,但是一直超时。百思不得其解。因为在本地环境是可以的。
原来是阿里云服务器限制了25端口。问了126邮箱那边的技术客服,只支持25端口。
问了阿里云的售后,他们说25端口不开放。可以考虑463端口或者他们的邮箱服务。
真是会赚钱啊。之后研究了一下,还是可以的。
(一)开通服务
阿里云的服务器可以直接开通邮件服务,每天200封免费。
也没什么麻烦的。直接开通了。
(二)创建域名
(三)查看域名配置
点开上图的配置:(由于我的已经验证通过了,所以状态是验证通过)
四(添加域名解析)
打开控制台的云解析DNS,按照上图的配置4个逐一添加即可。
五(验证)
等几分钟再回到之前的域名列表页面,点击验证即可。
还不懂的看官方文档吧。
https://help.aliyun.com/knowledge_detail/36723.html
六(创建发件邮箱)
七(代码实现java)
package com.mys.my.app.util;
import com.adobe.xmp.impl.Base64;
import net.sf.json.JSONObject;
import javax.mail.Message;
import javax.mail.Message.RecipientType;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;
import java.util.Properties;
public class SendMail {
String username = "xxxxxxx"; //由哪个邮箱发送邮件,就是在邮箱控制台创建的发信地址
String name="测试";
String password = "xxxxxx"; //发信地址的SMTP密码
private Message getMessage() {
Properties p = new Properties();
p.put("mail.smtp.host", "smtpdm.aliyun.com"); //阿里云smtp服务器地址
p.put("mail.smtp.auth", "true");
p.put("mail.smtp.name", "测试");
p.put("mail.smtp.socketFactory.class", "javax.net.ssl.SSLSocketFactory");
p.put("mail.smtp.socketFactory.port", "465");
p.put("mail.smtp.port", "465");
MyAuthor auth = new MyAuthor(username, password);
Session session = Session.getDefaultInstance(p, auth);
Message message = new MimeMessage(session);
return message;
}
public void sendVerify(String url,String stu_email, String randomNum,String mobile, String singn) throws Exception{
//拼接验证邮箱地址
address = url + address;
Message message = getMessage();
System.out.println("sendVerify:"+message);
//设置自定义发件人昵称
String nick=javax.mail.internet.MimeUtility.encodeText("测试");
//设置发件人
message.setFrom(new InternetAddress(nick+" <"+username+">"));
//设置收件人
message.setRecipient(RecipientType.TO, new InternetAddress(stu_email));
System.out.println("stu_email:"+stu_email);
//设置发件时间
message.setSentDate(new Date());
//设置标题
message.setSubject("测试");
//拼接接口参数
Map<String,String> map=new HashMap<String,String>();
map.put("randomNum", randomNum);
map.put("mobile", mobile);
map.put("email", stu_email);
map.put("singn", singn);
JSONObject paramsJson=JSONObject.fromObject(map);
System.out.println("paramsJson:"+paramsJson);
//对参数进行encode
String base64Params=Base64.encode(paramsJson.toString());
System.out.println("base64Params:"+base64Params);
String m="<div style='margin:10px auto;padding:10px;max-width:800px;font-size: 14px;'>测试测试测试测试</div>";
//设置发送正文
message.setContent(m, "text/html;charset=gb2312");
System.out.println(message.getSentDate());
//发送邮件
Transport.send(message);
}
public static void main(String[] args) {
SendMail send=new SendMail();
try {
send.sendVerify("","xxxxxxx@qq.com ", "","","");
} catch (Exception e) {
e.printStackTrace();
}
}
}