📄 smtpsender.java
字号:
import javax.naming.Context;
import javax.naming.NamingException;
import javax.naming.directory.Attribute;
import javax.naming.directory.Attributes;
import javax.naming.directory.DirContext;
import javax.naming.directory.InitialDirContext;
import java.util.Properties;
import java.util.Date;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.Message;
import javax.mail.internet.MimeMessage;
public class SMTPSender
{
public static void main(String[] args) throws Exception
{
//下面是邮件要群发给的多个收件人地址
String [] to = {"it315_test@sohu.com","it315_test@sina.com",
"it315_test@163.com","it315_test@126.com"};
//创建Session对象
Properties props = new Properties();
/*mail.smtp.localhost属性用于设置SMTP协议的EHLO命令中的
主机名,其他SMTP服务器可能需要使用这个主机名确定发件SMTP
服务器的身份,这个信息可以从JavaMail的javadocs文档中的
com.sun.mail.smtp包的帮助页面内查看到。
*/
props.setProperty("mail.smtp.localhost","mail.itcast.cn");
Session session = Session.getInstance(props);
session.setDebug(true);
Message msg = createMessage(session);
for(int i=0; i<to.length; i++)
{
try
{
sendMessage(session,msg,to[i]);
}
catch(Exception e)
{
e.printStackTrace();
}
}
}
public static Message createMessage(Session session)
throws Exception
{
String from = "it315_test@sina.com ";//发件人地址
String subject = "SMTPSender demo";//邮件主题
String body = "SMTPSender demo";//邮件内容
//创建代表邮件的MimeMessage对象,不包含收件人地址
MimeMessage msg = new MimeMessage(session);
msg.setFrom(new InternetAddress(from));
msg.setSentDate(new Date());
msg.setSubject(subject);
msg.setText(body);
return msg;
}
public static void sendMessage(Session session,Message msg,String to)
throws Exception
{
//设置邮件内容的收件人并生成邮件消息内容
msg.setRecipients(Message.RecipientType.TO,
InternetAddress.parse(to));
msg.saveChanges();
//连接收件人地址所在的SMTP服务器并发送邮件
Transport transport = session.getTransport("smtp");
String domain = to.substring(to.indexOf("@")+1);
String smtpServer = getSmtpServer(domain,null);
transport.connect(smtpServer,null,null);
transport.sendMessage(msg,
msg.getRecipients(Message.RecipientType.TO));
transport.close();
}
public static String getSmtpServer(String domain,String dnsServer)
throws Exception
{
DirContext ctx = new InitialDirContext();
Attributes attrsMx = null;
if(dnsServer != null)
{
attrsMx = ctx.getAttributes("dns:" + "//" + dnsServer +
"/" + domain, new String[]{"MX"});
}
else
{
attrsMx = ctx.getAttributes("dns:" + "/" + domain, new String[]{"MX"});
}
String recordMx = (String)attrsMx.get("MX").get();
String smtpServer = recordMx.substring(
recordMx.indexOf(" ") + 1);
return smtpServer;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -