阿里云服务器发送邮件失败?连接超时?25端口被封?

大家好,我是烤鸭:


之前用阿里云服务器的时候发送126企业邮箱,用的smtp方式,但是一直超时。百思不得其解。因为在本地环境是可以的。

原来是阿里云服务器限制了25端口。问了126邮箱那边的技术客服,只支持25端口。

问了阿里云的售后,他们说25端口不开放。可以考虑463端口或者他们的邮箱服务。

真是会赚钱啊。


之后研究了一下,还是可以的。


(一)开通服务

   阿里云的服务器可以直接开通邮件服务,每天200封免费。

阿里云服务器发送邮件失败?连接超时?25端口被封?_第1张图片

也没什么麻烦的。直接开通了。


创建域名

阿里云服务器发送邮件失败?连接超时?25端口被封?_第2张图片


(三)查看域名配置

点开上图的配置:(由于我的已经验证通过了,所以状态是验证通过)

阿里云服务器发送邮件失败?连接超时?25端口被封?_第3张图片


四(添加域名解析)

打开控制台的云解析DNS,按照上图的配置4个逐一添加即可。

阿里云服务器发送邮件失败?连接超时?25端口被封?_第4张图片


五(验证)

等几分钟再回到之前的域名列表页面,点击验证即可。

还不懂的看官方文档吧。

https://help.aliyun.com/knowledge_detail/36723.html


六(创建发件邮箱)

阿里云服务器发送邮件失败?连接超时?25端口被封?_第5张图片


七(代码实现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 map=new HashMap();
            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="
测试测试测试测试
";                      //设置发送正文             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("","[email protected] ", "","","");         } catch (Exception e) {             e.printStackTrace();         }     } }



你可能感兴趣的:(JAVA)