JavaMail SMTP服务器发送邮件程序示例 java通过dns服务器解析ip地址
/**
* 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地址的更多相关文章
- Linux服务器架设篇,DNS服务器(二),cache-only DNS服务器的搭建
一.理论基础 什么是cache-only服务器?即不具备自己正反解Zone的能力,仅进行缓存或转发的DNS服务器.其实它也称不上是DNS服务器.但是也是一个必备的知识点. 这种服务器只有缓存搜索结果的 ...
- JAVA 长整型转换为IP地址的方法
JAVA 长整型转换为IP地址的方法 代码例如以下: /** * 整型解析为IP地址 * @param num * @return */ public static String int2iP(Lon ...
- JAVA从本机获取IP地址
JAVA从本机获取IP地址 论述: 此篇博客是在工作的时候,需要获得当前网络下面正确的ip地址,在网上查阅很多博客,网上一个比较普遍的说法是通过InetAddress.getLocalHost().g ...
- Java 获取客服端ip地址
Java 获取客服端ip地址 /** * <html> * <body> * <P> Copyright 1994 JsonInternational</p& ...
- java如何获取访问真实IP地址?
java如何获取访问真实IP地址 解决方法: 获取请求主机IP地址,如果通过代理进来,则透过防火墙获取真实IP地址,如果没有代理,则获取真实ip public static String getIp( ...
- JAVA 获取指定网址的IP地址 实例
如今买票是一大难事,在高峰时段 打开12306网站,慢的像蜗牛,想到以前用修改hosts文件来登录Google(Hosts是一个没有扩展名的系统文件,可以用记事本等工具打开,其作用就是将一些常用的网址 ...
- java获取当前网站的IP地址
package ip; import java.net.InetAddress; import java.net.UnknownHostException; /** * * @author * */ ...
- java 获取访问主机的ip地址
Java的api的说法: getHeader public java.lang.String getHeader(java.lang.String name) Return the first val ...
- java获取访问者真实的IP地址
众所周知java方法request.getremoteaddr()可以获得访问者的IP地址 但是在通过了Apache,Squid等反向代理软件就不能获取到客户端的真实IP地址了.如果使用了反向代理软件 ...
随机推荐
- [python]操作redis sentinel以及cluster
先了解清楚sentinel和cluster的差别,再学习使用python操作redis的API,感觉会更加清晰明白. 1.redis sentinel和cluster的区别 sentinel遵循主从结 ...
- python day 06 作业
- wx 设置监测并自动更新
checkUpdate(){ console.log('----->>checkVersionUpadte') const updateManager = wx.getUpdateMana ...
- less中使用calc
css3中可以使用calc()来实现自适应布局 例如:width:“calc(100% - 25px)” width: calc(expression); ==> expression是一个表 ...
- 全卷积神经网络FCN
卷积神经网络CNN(YannLecun,1998年)通过构建多层的卷积层自动提取图像上的特征,一般来说,排在前边较浅的卷积层采用较小的感知域,可以学习到图像的一些局部的特征(如纹理特征),排在后边较深 ...
- python学习笔记第一周
目录: 一.基础概念 1.变量与常量介绍 2.引号的使用 3.条件判断 4.while与for循环 5.input输入 6.getpass模块 7.python编码 二.作业 1.个人登录系统 2.多 ...
- 【转载】 A* 寻路算法 (个人认为最详细,最通俗易懂的一个版本)
原文地址: http://www.cppblog.com/christanxw/archive/2006/04/07/5126.html =============================== ...
- poj 2175 费用流消圈
题意抽象出来就是给了一个费用流的残存网络,判断该方案是不是最优方案,如果不是,还要求给出一个更优方案. 在给定残存网络上检查是否存在负环即可判断是否最优. 沿负环增广一轮即可得到更优方案. 考虑到制作 ...
- CentOS右键菜单添加新增文件命令
进入模板文件夹, 增加空白文件即可. cd /home/tom/Templatesvi text01.txt //新增一个名为text01的文本文件. :wq //保存退出. 另外可以用LibreOf ...
- WEBapi在IIS发布注意事项-发布错误
发布报错:403.14-Forbidden Web 服务器被配置为不列出此目录的内容 解决方法: 1)打开IIS管理器 2)找到功能视图的目录浏览 3)双击进入后,点击右侧操作栏-启用