大家好,我是烤鸭:
之前用阿里云服务器的时候发送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);//对参数进行encodeString 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();}}
}