/**
* JavaMail SMTP服务器发送邮件程序示例
* 扮演SMTP服务器角色与邮件客户端软件最大的区别就是:
* SMTP服务器需要解析不同接收人邮件地址主机名对应的SMTP服务器主机名
* ,同时不需要验证
* 注意:由于条件的限制,此程序是运行不成功的,原因见下面的注释说明
*/ import java.util.Date;
import java.util.Properties;
import javax.mail.Message.RecipientType;
import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.AddressException;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
import javax.naming.NamingException;
import javax.naming.directory.Attributes;
import javax.naming.directory.DirContext;
import javax.naming.directory.InitialDirContext;
/**
* @author Bill Tu
* @since May 27, 2011(12:21:41 PM)
*
*/
public class SMTPSenderTest {
public static String getSMTPHost(String domain,String dnsServer) throws NamingException{
DirContext ctx=new InitialDirContext();
Attributes mxAttrs=null;
if(null != dnsServer){
mxAttrs=ctx.getAttributes("dns://"+dnsServer+"/"+domain,new String[]{"MX"});
}else{
mxAttrs=ctx.getAttributes("dns:/"+domain,new String[]{"MX"});
} String mx=(String) mxAttrs.get("MX").get();
String smtpServerName=mx.substring(mx.indexOf(" ")+1);
return smtpServerName;
} private static Message getMessage(Session session) throws AddressException, MessagingException{
String from="iwtxokhtd@163.com";
String subject="hello";
String content="this is content"; MimeMessage msg=new MimeMessage(session);
msg.setFrom(new InternetAddress(from));
msg.setSubject(subject);
msg.setText(content);
msg.setSentDate(new Date()); return msg; } private static Session getSession(){
Properties props=new Properties();
//设置ehlo命令中的主机名,若检测到主机名与其IP地址一致,则认为这时的发送方是SMTP服务器,就不需要验证;否则就是邮件客户端软件,则需要验证。
props.put("mail.smtp.localhost", "mail.digu.com");
props.put("mail.smtp.auth", "false");
props.put("mail.smtp.port", "25");
Session session=Session.getDefaultInstance(props);
session.setDebug(true);
return session;
} @SuppressWarnings("static-access")
private static void sendEmail(Message message,Session session,String to)
throws AddressException, MessagingException, NamingException{
message.setRecipients(RecipientType.TO, InternetAddress.parse(to));
message.saveChanges(); Transport transport=session.getTransport("smtp"); String domain=to.substring(to.indexOf("@")+1);
String host=getSMTPHost(domain,null); transport.connect(host, null, null);
transport.send(message, message.getRecipients(Message.RecipientType.TO)); transport.close();
} public static void main(String []args)
throws AddressException, MessagingException, NamingException{
String []to=new String[]{"277515444@qq.com","277515445@qq.com"};
Session session=getSession();
Message msg=getMessage(session);
for(String email:to){
sendEmail(msg,session,email);
}
}
}

  

JavaMail SMTP服务器发送邮件程序示例 java通过dns服务器解析ip地址的更多相关文章

  1. Linux服务器架设篇,DNS服务器(二),cache-only DNS服务器的搭建

    一.理论基础 什么是cache-only服务器?即不具备自己正反解Zone的能力,仅进行缓存或转发的DNS服务器.其实它也称不上是DNS服务器.但是也是一个必备的知识点. 这种服务器只有缓存搜索结果的 ...

  2. JAVA 长整型转换为IP地址的方法

    JAVA 长整型转换为IP地址的方法 代码例如以下: /** * 整型解析为IP地址 * @param num * @return */ public static String int2iP(Lon ...

  3. JAVA从本机获取IP地址

    JAVA从本机获取IP地址 论述: 此篇博客是在工作的时候,需要获得当前网络下面正确的ip地址,在网上查阅很多博客,网上一个比较普遍的说法是通过InetAddress.getLocalHost().g ...

  4. Java 获取客服端ip地址

    Java 获取客服端ip地址 /** * <html> * <body> * <P> Copyright 1994 JsonInternational</p& ...

  5. java如何获取访问真实IP地址?

    java如何获取访问真实IP地址 解决方法: 获取请求主机IP地址,如果通过代理进来,则透过防火墙获取真实IP地址,如果没有代理,则获取真实ip public static String getIp( ...

  6. JAVA 获取指定网址的IP地址 实例

    如今买票是一大难事,在高峰时段 打开12306网站,慢的像蜗牛,想到以前用修改hosts文件来登录Google(Hosts是一个没有扩展名的系统文件,可以用记事本等工具打开,其作用就是将一些常用的网址 ...

  7. java获取当前网站的IP地址

    package ip; import java.net.InetAddress; import java.net.UnknownHostException; /** * * @author * */ ...

  8. java 获取访问主机的ip地址

    Java的api的说法: getHeader public java.lang.String getHeader(java.lang.String name) Return the first val ...

  9. java获取访问者真实的IP地址

    众所周知java方法request.getremoteaddr()可以获得访问者的IP地址 但是在通过了Apache,Squid等反向代理软件就不能获取到客户端的真实IP地址了.如果使用了反向代理软件 ...

随机推荐

  1. LINUX内核完全注释

    学习教材:LINUX内核完全注释,内核版本0.11,修正版V3.0 赵炯编著 参考教材:UNIX操作系统设计--M. J. Bach, programming the 80x86  --John H. ...

  2. 3d的 一些公式

    1. 3d围绕 z轴旋转 x,y 变换公式: // α β x = r cosα y = r sinα x' = r cos (α+β) y' = r sin (α+β) x' = r (cosα c ...

  3. 2017中国大学生程序设计竞赛 - 网络选拔赛 HDU 6152 Friend-Graph(暴力搜索)

    题目传送:http://acm.hdu.edu.cn/showproblem.php?pid=6152 Problem Description It is well known that small ...

  4. quartz 应用

    quartz api地址:http://www.quartz-scheduler.org/api/2.2.0/ 根据需求选择quartz调度方案: 1,如果调度时间是固定不变的,可以选择静态调度 2, ...

  5. 如何上传本地项目到github

    github作为git的代码托管,而许多大神都在上面托管自己的开源项目.现在,我来记录一下我是如何将本地项目上传到github上. 一.安装git工具(具体方法见百度) 二.配置全局 三.创建.ssh ...

  6. Sublime text3常用的插件功能和常用的快捷键

    Sublime text3常用的插件功能和用法 Package control 插件管理 (使用ctrl+` 将代码复制后粘贴到代码粘贴处,按Enter没有出现错误的话就安装成功了)(ctrl+shi ...

  7. random module

    import random # 方法返回随机生成的一个实数,它在[0,1)范围内print(random.random())运行结果:0.06435148447021877 # 方法返回随机生成的一个 ...

  8. 你真的了解word-wrap和word-break的区别吗? (转载)

    这两个东西是什么,我相信至今还有很多人搞不清,只会死记硬背的写一个word-wrap:break-word;word-break:break-all;这样的东西来强制断句,又或者是因为这两个东西实在是 ...

  9. 梯度下降与pytorch

    记得在tensorflow的入门里,介绍梯度下降算法的有效性时使用的例子求一个二次曲线的最小值. 这里使用pytorch复现如下: 1.手动计算导数,按照梯度下降计算 import torch #使用 ...

  10. <------------------字符流--------------------->

    FileWriter 字符输出流: 方法: 写入:write 刷新:flush public static void main(String[] args) throws IOException { ...