精华内容
参与话题
问答
  • .net465端口发送邮件

    2018-08-25 22:29:26
    .net 465端口发送邮件,开发过程中,经常会使用到发送邮件功能,而我们在使用阿里云服务器发送邮件时,由于安全原因,阿里云禁用掉了25端口,于是就造成了我们在本地使用25端口发送邮件时是好的,一放到服务器上就...
  • 先看看效果 代码 自己填写class email_inf里的配置, 使用方法:调用achievecode获取一个随机验证码并保存然后通过sendAuthCodeEmail方法发送邮件 import org.apache.commons.mail.EmailException;...

    首先需要导入三个jar包:htmlmail.zip

    先看看效果

    效果

    代码

    自己填写class email_inf里的配置,
    使用方法:调用achievecode获取一个随机验证码并保存然后通过sendAuthCodeEmail方法发送邮件
    
    
    import org.apache.commons.mail.EmailException;
    import org.apache.commons.mail.HtmlEmail;
    
    import java.util.Arrays;
    import java.util.Collections;
    import java.util.List;
    
    public class email {
    
            public String achieveCode() {   // 随机验证码
                String[] beforeShuffle= new String[] { "2", "3", "4", "5", "6", "7", "8", "9", "A", "B", "C", "D", "E", "F",
                        "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z", "a",
                        "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v",
                        "w", "x", "y", "z" };
                List list = Arrays.asList(beforeShuffle);//将数组转换为集合
                Collections.shuffle(list);  //打乱集合顺序
                StringBuilder sb = new StringBuilder();
                for (int i = 0; i < list.size(); i++) {
                    sb.append(list.get(i)); //将集合转化为字符串
                }
                return sb.toString().substring(3, 8);  //截取字符串第4到8
            }
    
    
            //发送验证码邮件
            public  boolean sendAuthCodeEmail(String email, String authCode) {
                HtmlEmail mail = new HtmlEmail();
                try {
                    mail.setHostName(email_inf.hostname);  //smtp服务器
                    //如果使用25端口发可以注释下面两行
                    mail.setSSLOnConnect(true);   //使用ssl加密true
                    mail.setSslSmtpPort("465");   //使用465端口
                    mail.setCharset(email_inf.charset);  //字符集
                    mail.addTo(email);		//收件人邮箱
                    mail.setFrom(email_inf.setfromemail, email_inf.setfromname); 	//发送人邮箱,发件人
                    mail.setAuthentication(email_inf.username, email_inf.userpassword);	//用户名,密码(是smtp/pop密码,不是邮箱密码,)
                    mail.setSubject(email_inf.title); //标题
                    mail.setMsg(email_inf.msg1+authCode+ email_inf.msg2);  //authcode是形参,验证码,上下两个msg、是html可以自己改。
                    mail.send();  //发送
                    System.out.println("发送成功");
                    return true;
                } catch (EmailException e) {
                    e.printStackTrace();
                    return false;
                }
    
            }
    
    }
    class email_inf {                //这里存储的是配置信息
        public final static String hostname=new String("smtp.***.com");// 这里是SMTP发送服务器的名字"
        public final static String charset=new String("utf-8");// 字符编码集的设置
        public final static String setfromemail=new String("***@***.com");// 发送人的邮箱
        public final static String setfromname=new String("***");//发送人
        public final static String username=new String("***@***.com");//邮箱用户名
        public final static String userpassword=new String("********************");//pop密码
        public final static String title=new String("验证码");//邮件主题
        public final static String msg1=new String("<head><base target=\"_blank\" /><style type=\"text/css\">::-webkit-scrollbar{ display: none; }</style><style id=\"cloudAttachStyle\" type=\"text/css\">#divNeteaseBigAttach, #divNeteaseBigAttach_bak{display:none;}</style><style id=\"blockquoteStyle\" type=\"text/css\">blockquote{display:none;}</style><style type=\"text/css\">body{font-size:14px;font-family:arial,verdana,sans-serif;line-height:1.666;padding:0;margin:0;overflow:auto;white-space:normal;word-wrap:break-word;min-height:100px} td, input, button, select, body{font-family:Helvetica, 'Microsoft Yahei', verdana}pre {white-space:pre-wrap;white-space:-moz-pre-wrap;white-space:-pre-wrap;white-space:-o-pre-wrap;word-wrap:break-word;width:95%}th,td{font-family:arial,verdana,sans-serif;line-height:1.666}img{ border:0}header,footer,section,aside,article,nav,hgroup,figure,figcaption{display:block} blockquote{margin-right:0px}</style></head><body tabindex=\"0\" role=\"listitem\"><table width=\"700\" border=\"0\" align=\"center\" cellspacing=\"0\" style=\"width:700px;\"><tbody><tr><td><div style=\"width:700px;margin:0 auto;border-bottom:1px solid #ccc;margin-bottom:30px;\"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\" width=\"700\" height=\"39\" style=\"font:12px Tahoma, Arial, 宋体;\"><tbody><tr><td width=\"210\"></td></tr></tbody></table></div><div style=\"width:680px;padding:0 10px;margin:0 auto;\"><div style=\"line-height:1.5;font-size:14px;margin-bottom:25px;color:#4d4d4d;\"> <strong style=\"display:block;margin-bottom:15px;\">尊敬的用户:<span style=\"color:#f60;font-size: 16px;\"></span>您好!</strong><strong style=\"display:block;margin-bottom:15px;\"> 您正在进行<span style=\"color: red\">登录/注册</span>账号操作,请在验证码输入框中输入:<span style=\"color:#f60;font-size: 24px\">");
        public final static String msg2=new String("</span>,以完成操作。</strong></div><div style=\"margin-bottom:30px;\"><small style=\"display:block;margin-bottom:20px;font-size:12px;\"><p style=\"color:#747474;\">注意:此操作可能会修改您的密码或登录邮箱。如非本人操作,请及时登录并修改密码以保证帐户安全<br>(工作人员不会向你索取此验证码,请勿泄漏!)</p></small></div></div><div style=\"width:700px;margin:0 auto;\"><div style=\"padding:10px 10px 0;border-top:1px solid #ccc;color:#747474;margin-bottom:20px;line-height:1.3em;font-size:12px;\"> <p>此为系统邮件,请勿回复<br>请保管好您的邮箱,避免账号被他人盗用</p><p>木辰网络科技团队</p></div></div></td></tr></tbody></table></body>");
        //邮件内容
    }
    
    
    展开全文
  • 本人采用网上给的如下配置端口(spring.mail.properties.mail.smtp.socketFactory.port=465),结果部署到阿里云服务器上时候请求的端口仍然是25,说明配置没有生效。才有下面配置后dubug运行本地查看到底请求的端口...

    本人采用网上给的如下配置端口(spring.mail.properties.mail.smtp.socketFactory.port=465),结果部署到阿里云服务器上时候请求的端口仍然是25(原因就是因为阿里云服务器默认是禁止25端口的.所用只能改用 465或者其他端口)说明配置没有生效。才有下面配置后dubug运行本地查看到底请求的端口是什么,所以写此文章记录下自己的配置过程。做一个开发笔记省的配置不生效而来回周折。

    maven配置
    注:之前看的文章说spring-boot版本太低的话不支持更改端口,本人没有鉴定,如修改不成功请自己排查是否属于这个原因

        <dependency>
           <groupId>org.springframework.boot</groupId>
           <artifactId>spring-boot-starter-mail</artifactId>
        </dependency>
    

    在application.properties配置文件里增加配置,
    作者使用的是QQ企业邮箱

    #基础信息
    spring.mail.host=smtp.exmail.qq.com
    spring.mail.username=发送邮箱账号
    spring.mail.password=对应密码
    #使用SMTPS协议465端口
    spring.mail.port=465
    spring.mail.default-encoding=UTF-8
    #SSL证书Socket工厂
    spring.mail.properties.mail.smtp.socketFactory.class=javax.net.ssl.SSLSocketFactory
    #登录服务器是否需要认证
    spring.mail.properties.mail.smtp.auth=true
    

    测试代码

    import org.junit.runner.RunWith;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.beans.factory.annotation.Value;
    import org.springframework.boot.test.context.SpringBootTest;
    import org.springframework.mail.SimpleMailMessage;
    import org.springframework.mail.javamail.JavaMailSender;
    import org.springframework.test.context.junit4.SpringRunner;
    
    import hb.bk.HBBootApplication;
    
    @RunWith(SpringRunner.class)
    @SpringBootTest(classes = { HBBootApplication.class }) // 指定启动类
    public class ApplicationTests {
    
        @Autowired
        private JavaMailSender mailSender; // 自动注入的Bean
    
        @Value("${spring.mail.username}")
        private String Sender; // 读取配置文件中的参数
    
        public void testOne() {
            System.out.println("test hello 1");
        }
    
        public void sendSimpleMail() throws Exception {
            SimpleMailMessage message = new SimpleMailMessage();
            System.out.println("test hello Sender" + Sender);
            message.setFrom(Sender);
            message.setTo(Sender); // 自己给自己发送邮件
            message.setSubject("主题:简单邮件");
            message.setText("测试邮件内容");
            mailSender.send(message);
        }
    }
    

    查看是端口是否修改成功进入.send方法

    在这里插入图片描述

    然后查看doSend方法

    在这里插入图片描述

    doSend中有个
    transport = connectTransport();
    查看connectTransport()

    在这里插入图片描述

    可以看到 getPort()
    在图中516处打断点dubug运行的话可以看到在transport对象中有url信息
    请求端口为465设置成功
    在这里插入图片描述

    本人萌新一枚,还在疯狂采坑过程中,如有错误地方请指出。

    http://www.helper12366.com 网站开发过程记录

    展开全文
  • 我用的是阿里云的服务器知道25端口被禁 才换成465端口 但是报错信息显示的还是25端口
  • 阿里云可以成功使用,解决端口被封的问题。喜欢的朋友可以下载下来试试,我是一个CSDN新手,也是编程行业的新手。欢迎互相交流!
  • 项目场景: javaweb网站项目,实现... 问题描述: 本地测试MailUtils工具类成功发送邮件验证,服务器部署后保存,查看日记 ... timeout -1; nested exception is: java.net.ConnectException: Connection timed out

    项目场景:

    javaweb网站项目,实现注册功能时采用邮件验证方式。


    问题描述:

    本地测试MailUtils工具类成功发送邮件验证,服务器部署后保存,查看日记

    com.sun.mail.util.MailConnectException: Couldn't connect to host, port: smtp.qq.com, 25; timeout -1;
      nested exception is:
    	java.net.ConnectException: Connection timed out
    	at com.sun.mail.smtp.SMTPTransport.openServer(SMTPTransport.java:2054)
    	at com.sun.mail.smtp.SMTPTransport.protocolConnect(SMTPTransport.java:697)
    	at javax.mail.Service.connect(Service.java:386)
    	at javax.mail.Service.connect(Service.java:245)
    	at javax.mail.Service.connect(Service.java:194)
    	at javax.mail.Transport.send0(Transport.java:253)
    	at javax.mail.Transport.send(Transport.java:124)
    

    原因分析:

    log中记录了是25端口的问题,查询过后是服务器没有开启25端口。


    解决方案:

    条件限制,更改为使用端口465,具体代码如下:

    public final class MailUtils {
        private static final String USER = ""; // 发件人称号,同邮箱地址
        private static final String PASSWORD = ""; // 客户端授权码
    
        /**
         *
         * @param to 收件人邮箱
         * @param text 邮件正文
         * @param title 标题
         */
        /* 发送验证信息的邮件 */
        public static boolean sendMail(String to, String text, String title){
            try {
                Security.addProvider(new com.sun.net.ssl.internal.ssl.Provider());
                final Properties props = new Properties();
                props.put("mail.smtp.auth", "true");
                props.put("mail.smtp.host", "smtp.qq.com");
    			//采用465
                props.setProperty("mail.smtp.socketFactory.class", "javax.net.ssl.SSLSocketFactory");
                props.setProperty("mail.smtp.socketFactory.fallback", "false");
                props.setProperty("mail.smtp.port", "465");
                props.setProperty("mail.smtp.socketFactory.port", "465");
                props.put("mail.smtp.ssl.enable", true);
                // 发件人的账号
                props.put("mail.user", USER);
                //发件人的密码
                props.put("mail.password", PASSWORD);
    
                // 构建授权信息,用于进行SMTP进行身份验证
                Authenticator authenticator = new Authenticator() {
                    @Override
                    protected PasswordAuthentication getPasswordAuthentication() {
                        // 用户名、密码
                        String userName = props.getProperty("mail.user");
                        String password = props.getProperty("mail.password");
                        return new PasswordAuthentication(userName, password);
                    }
                };
                // 使用环境属性和授权信息,创建邮件会话
                Session mailSession = Session.getInstance(props, authenticator);
                // 创建邮件消息
                MimeMessage message = new MimeMessage(mailSession);
                // 设置发件人
                String username = props.getProperty("mail.user");
                InternetAddress form = new InternetAddress(username);
                message.setFrom(form);
    
                // 设置收件人
                InternetAddress toAddress = new InternetAddress(to);
                message.setRecipient(Message.RecipientType.TO, toAddress);
    
                // 设置邮件标题
                message.setSubject(title);
    
                // 设置邮件的内容体
                message.setContent(text, "text/html;charset=UTF-8");
    
                //
                // 发送邮件
                Transport.send(message);
                return true;
            }catch (Exception e){
                e.printStackTrace();
            }
            return false;
        }
    
    
    展开全文
  • 今天在Springboot项目中遇到一个问题,JAVA后台代码在windows下发送邮件正常,打包部署到linux服务器上发送邮件...改变发送邮件Port,本文以465端口号为例。 1.配置springboot配置文件 spring: mail: host: smtp.

    今天在Springboot项目中遇到一个问题,JAVA后台代码在windows下发送邮件正常,打包部署到linux服务器上发送邮件一直失败,咨询了下阿里的客服,原来是发送邮件的25端口被禁用,所以邮件发送失败。

    解决办法:

    邮件发送部署在云服务器上时,不要使用默认的端口(25),一般为了安全云服务器默认是禁掉的,但是可以配置解禁,不过不推荐这样做。

    改变发送邮件Port,本文以465端口号为例,大家可以根据实际情况,配置使用。

    1.配置springboot配置文件

    spring:
      mail:
        host: smtp.163.com   //本人使用的是163邮箱
        username: 邮箱
        password: 授权码,不是邮箱密码
        properties:
          mail:
            smtp:
              auth: true
              timeout: 25000
              ssl.enable: true
              socketFactory.class: javax.net.ssl.SSLSocketFactory
              starttls.enable: true
              socketFactory.port: 465 
              port: 465    

    2.JAVA后台

    
    	@Autowired
    	private JavaMailSender sender;
    
    	@Value("${spring.mail.username}")
    	private String from;
    	@Value("${spring.mail.password}")
    	private String psw;
    	@Value("${spring.mail.host}")
    	private String host;
    
    
    /**
    	 * 使用加密的方式,利用465端口进行传输邮件,开启ssl
    	 * user对象为接收邮件的一些信息
    	 */
    	public boolean sendMail(SysUser user) {
    		try {
    			Security.addProvider(new com.sun.net.ssl.internal.ssl.Provider());
    			final String SSL_FACTORY = "javax.net.ssl.SSLSocketFactory";
    			// 设置邮件会话参数
    			Properties props = new Properties();
    			// 邮箱的发送服务器地址
    			props.setProperty("mail.smtp.host", host);
    			props.setProperty("mail.smtp.socketFactory.class", SSL_FACTORY);
    			props.setProperty("mail.smtp.socketFactory.fallback", "false");
    			// 邮箱发送服务器端口,这里设置为465端口
    			props.setProperty("mail.smtp.port", "465");
    			props.setProperty("mail.smtp.socketFactory.port", "465");
    			props.put("mail.smtp.auth", "true");
    			final String username = from;//这里就是配置文件中定义的用户名
    			final String password = psw;
    			// 获取到邮箱会话,利用匿名内部类的方式,将发送者邮箱用户名和密码授权给jvm
    			Session session = Session.getDefaultInstance(props, new Authenticator() {
    				protected PasswordAuthentication getPasswordAuthentication() {
    					return new PasswordAuthentication(username, password);
    				}
    			});
    			// 通过会话,得到一个邮件,用于发送
    			Message msg = new MimeMessage(session);
    			// 设置发件人
    			msg.setFrom(new InternetAddress(from));
    			// 设置收件人,to为收件人,cc为抄送,bcc为密送
    			msg.setRecipients(Message.RecipientType.TO, InternetAddress.parse(user.getUsername(), false));
    			msg.setRecipients(Message.RecipientType.CC, InternetAddress.parse(user.getUsername(), false));
    			msg.setRecipients(Message.RecipientType.BCC, InternetAddress.parse(user.getUsername(), false));
    			msg.setSubject("xx邮件");
    			// 设置邮件消息
    			msg.setText("恭喜你,此邮件。。。。。。。。不需要回复");//这里也可以定义跳转链接
    			// 设置发送的日期
    			msg.setSentDate(new Date());
    
    			// 调用Transport的send方法去发送邮件
    			Transport.send(msg);
    
    		} catch (Exception e) {
    			e.printStackTrace();
    			return false;
    		}
    		return true;
    
    	}

    3.本文使用的服务器为阿里云服务器,一般自己使用的端口号需要在网络安全配置中去开启使用的端口号,并把它加入到防火墙中,经过以上步骤,基本上就可以解决本地可以发送而linux服务器无法发送邮件的问题了。

    展开全文
  • 之前项目发邮件是使用25端口号来发送,但是由于升级部署迁移至阿里云,阿里云是禁止25端口号,所以我们需要使用465端口号来发送邮件。 各端口号的协议,借鉴:https://www.douban.com/note/397681162/ 25端口号协议...
  • 通过465端口发送邮件

    2019-09-15 14:14:02
    一般情况下我们都是使用25端口来发送邮件,但有时候因为某些原因,25端口被禁止使用了,此时,如果465端口能够使用,我们就可以用465端口来发送邮件。 不知道阿里云什么时候上的新规,说专用网络(VPC)不允许开放...
  • mantis配置465端口发送邮件(针对阿里云,默认不开通25端口,必须走465) $g_phpMailer_method = PHPMAILER_METHOD_SMTP - SMTP; $g_return_path_email = '用户名@sina.com'; $g_smtp_host = 'smtp.sina.com'; $g_smtp...
  • smtp_port=25 $transport = new ...$transport = new Swift_SmtpTransport('smtp.example.org', 465, 'ssl'); // Create the Transport $transport = (new Swift_SmtpTransport('smtp.gmail.com', 465, 'ssl').
  • Java-465端口邮件发送

    2019-12-16 14:34:53
    发邮件请使用外部邮件服务商的465端口或云邮产品。 若有特殊场景,需要从云主机对外连接TCP25端口,请提交“25端口解封申请”。 提交申请后,需要1个工作日完成审核,审核结果将邮件通知您。 可以使用465端口发送...
  • 25端口本身是非SSL协议的端口,一般使用25端口发送的邮件都是非SSL协议的,当阿里云禁用了25后,如果我们仍想发送邮件,可以使用SSL协议的端口465,SMTP服务SSL协议端口号是465,该端口并未被阿里云禁用,可以用来...
  • 最终发现原因:阿里云实例服务器默认禁止了25端口; 阿里云回复:  由于国际与国内均对垃圾邮件进行严格管控,我国《互联网信息服务管理办法》、《中国互联网协会反垃圾邮件规范》均对垃圾邮件进行说明与管理规范...
  • 本文将介绍如何在Spring Boot工程完成QQ邮箱配置,实现邮件发送功能。 一、在pom文件中添加依赖 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>...spri
  • 使用阿里云ECS的站长们应该都知道阿里云ECS为了防止其服务器被当做垃圾邮件发送服务器禁止了邮件端口25的使用,这就造成系统级的提醒邮件无法发送,类似Fail2ban、DDoS Deflate的重要暴力破解、DDOS攻击提醒邮件有...
  • 由于服务器封禁了25端口,必须要通过465发送邮件 最后终于找到了使用postfix的可行方法,这里记录一下问题,方便以后备查,也方便遇到同样问题的小伙伴查阅 1. 找到里面的smtp服务,将端口改为465 vi /etc/...

空空如也

1 2 3 4 5 ... 20
收藏数 1,040
精华内容 416
关键字:

465端口