• java匿名发送邮件(不需要登录)


    package com.liu.test;
    
    import java.security.GeneralSecurityException;
    import java.util.Date;
    import java.util.Hashtable;
    import java.util.Properties;
    
    import javax.mail.BodyPart;
    import javax.mail.Message;
    import javax.mail.MessagingException;
    import javax.mail.Multipart;
    import javax.mail.Session;
    import javax.mail.Transport;
    import javax.mail.internet.InternetAddress;
    import javax.mail.internet.MimeBodyPart;
    import javax.mail.internet.MimeMessage;
    import javax.mail.internet.MimeMultipart;
    import javax.naming.Context;
    import javax.naming.NamingEnumeration;
    import javax.naming.NamingException;
    import javax.naming.directory.Attribute;
    import javax.naming.directory.Attributes;
    import javax.naming.directory.DirContext;
    import javax.naming.directory.InitialDirContext;
    
    public class SendMail {
        
         public static void main(String[] args) throws NamingException,
         MessagingException {
          // DNS服务器,看看本机的DNS配置
        MailMessage mailMessage = new MailMessage();
        mailMessage.setSubject("测试");
        mailMessage.setFrom("有效的邮箱域名"); //像大型的邮箱不可以发例如qq、163;
        String fileNames[] ={};
        mailMessage.setFileNames(fileNames);
        String tos[] = {"xxxxxxx@qq.com"};
        mailMessage.setTos(tos);
        mailMessage.setContent("工资加倍");
        try {
            sendMail(mailMessage);
        } catch (Exception e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        
        
    }
         public static void sendMail(MailMessage mailMessage) throws Exception{
                // DNS服务器,如果需要的话手工设置一下。
                     String dns = "dns://";
                    
                    //得到接受方的服务器域名
                    //先从邮件中封装的收件人地址里取出收件人所在发服务器地址,然后通过该地址查找本地DNS记录
                    String sendUser = mailMessage.getTos()[0];
                    String domain = sendUser.substring(sendUser.indexOf('@') + 1);
                    Hashtable<String, String> env = new Hashtable<String, String>();
                    env.put(Context.INITIAL_CONTEXT_FACTORY, "com.sun.jndi.dns.DnsContextFactory");
                    env.put(Context.PROVIDER_URL, dns);
                    DirContext ctx = new InitialDirContext(env);
                    Attributes attrs = ctx.getAttributes(domain, new String[] {"MX"});
                    if (attrs == null || attrs.size() <= 0) {
                        throw new java.lang.IllegalStateException(
                            "Error: Your DNS server has no Mail eXchange records!");
                    }
                    NamingEnumeration servers = attrs.getAll();
                    // 列出所有邮件服务器:
                    String smtpHost = null;
                    boolean isSend = false;
                    StringBuffer buf = new StringBuffer();
                    while (servers.hasMore()) {
                        Attribute hosts = (Attribute) servers.next();
                        for (int i = 0; i < hosts.size(); ++i) {
                            //sample: 20 mx2.qq.com
                            smtpHost = (String) hosts.get(i);
                            //parse the string to get smtpHost. sample: mx2.qq.com
                            smtpHost = smtpHost.substring(smtpHost.lastIndexOf(' ') + 1);
                            smtpHost = smtpHost.replace("com.", "com");
                            try {
                                sendEms(smtpHost,mailMessage);
                                isSend = true;
                                return;
                            } catch (Exception e) {
                                buf.append(e.toString()).append("
    ");
                                continue;
                            }
                        }
                    }
                  
                
               }
         
         private static boolean sendEms(String smtpHost, MailMessage mailMessage) throws MessagingException, GeneralSecurityException{
                Properties p = new Properties();
                p.put("mail.smtp.host", smtpHost);
                p.put("mail.smtp.port", "25");
                p.put("mail.smtp.auth", "false");
                p.put("mail.smtp.socketFactory.class", "javax.net.ssl.SSLSocketFactory");
                Session session = Session.getInstance(p);
                session.setDebug(true);
                MimeMessage msg = new MimeMessage(session);
                // 加载发件人地址
             String sendUser = mailMessage.getFrom();
             if(sendUser==null || sendUser.trim().isEmpty()){
                 return false;
             }
                msg.setFrom(new InternetAddress(sendUser));//可发匿名信
                 // 加载收件人地址
             String[] receipters =mailMessage.getTos();
             if (receipters == null || receipters.length == 0) {
                    return false;
                }
             // 加载标题
             String subject =mailMessage.getSubject();
             InternetAddress internetAddress[] = new InternetAddress[receipters.length];
             for (int i = 0; i < internetAddress.length; i++) {
                    internetAddress[i] = new InternetAddress(receipters[i]);
                }
                msg.addRecipients(Message.RecipientType.TO, internetAddress);
                msg.setSubject(subject);
                msg.setHeader("X-Mailer", "JavaMail");
                msg.setSentDate(new Date());
    
                Multipart mimeMultipart = new MimeMultipart();
    
           //内容部分.
                BodyPart contentBodyPart = new MimeBodyPart();
                //add email content part.
                // 设置邮件的文本内容
                contentBodyPart.setContent(mailMessage.getContent(), "text/html;charset=UTF-8");
                mimeMultipart.addBodyPart(contentBodyPart);
                msg.setContent(mimeMultipart);
                msg.setSentDate(new Date());
                msg.saveChanges();
                Transport transport=session.getTransport("smtp");
                transport.connect();
                transport.send(msg, msg.getAllRecipients());
                transport.close();
                System.out.println("Send html email success.");;
                return true;
            }
    
    }
  • 相关阅读:
    团队开发-第一阶段冲刺-10
    团队开发-第一阶段冲刺-09
    Spring(三)
    第五周总结
    Spring(一)
    程序员修炼之道:从小工到专家阅读笔记1
    MyBatis(三)
    MyBatis(二)
    MyBatis
    第四周总结
  • 原文地址:https://www.cnblogs.com/lhq1996/p/12205990.html
Copyright © 2020-2023  润新知