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地址了.如果使用了反向代理软件 ...
随机推荐
- 2017ICPC南宁赛区网络赛 Train Seats Reservation (简单思维)
You are given a list of train stations, say from the station 111 to the station 100100100. The passe ...
- python文件读写小结
读文件 打开一个文件用open()方法(open()返回一个文件对象,它是可迭代的): >>> f = open('test.txt', 'r') r表示是文本文件,rb是二进制文件 ...
- shell 中变获取值及运算的几种方法
num=$(tail ./image/1.txt -n 1) num=$(($num+1))
- Python 使用sqlalchemy操作MYSQL
1. 安装sqlalchemy库 SQL操作引擎可能需要pymysql,故要安装如下两个程序 pip install sqlalchemy pip instal pymysql
- Python学习笔记第十五周
目录: 一.CSS补充 1.position 2.overflow 3.hover 4.background 二.JavaScript 三.DOM 主要内容: 一.CSS补充 1.position 可 ...
- 计时器---JS
<script type="text/javascript"> function count(){ var a=document.getElementById(&quo ...
- MySQL篇,第一章:数据库知识1
MySQL 数据库 1 一.MySQL概述 1.什么是数据库 数据库是一个存储数据的仓库 2.哪些公司在用数据库 金融机构.购物网站.游戏网站.论坛网站... ... 3.提供 ...
- vs2015连接mysql进行数据库操作
要求:电脑提前安装好vs,mysql. 1.在需要连接mysql的项目上右键选择“属性” -> “C/C++” -> “常规” ->选择“附加包含目录” 在弹出窗口中添加mysql的 ...
- django-dailyfresh
Hold on ,learn by myself! redis nosql - 不支持sql语法 - 存储数据都是KV形式 - Mongodb - Redis - Hbase hadoop - Cas ...
- Blender 作的鸭脖
鸭脖...https://www.youtube.com/watch?v=JS8V4_Ncn0w 新建一段骨骼,编辑,[E]挤出生成3段, 或者[W]细分回到物体模式,选中骨骼,属性编辑器\物体数据\ ...