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("\r\n");
                            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;
        }

}


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM