/**
* 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. Golang AES加密

    package main import ( "crypto/aes" "crypto/cipher" "fmt" "os" ...

  2. 一分钟使用Docker快速搭建Wordpress

    1. apt install docker.io -y 2. pip install docker-compose 3. vim wordpress_stack.yml version: '3.1' ...

  3. flask中利用from来进行对修改修改时旧密码的验证

    在flask中,肯定是post提交个from进行密码验证.还有一定就是修改密码肯定是登录之后才能进行对密码的修改,这么说,在浏览器中的session中一定会有用户的信息,可以通过相对应的信息去获取到相 ...

  4. [LeetCode&Python] Problem 690. Employee Importance

    You are given a data structure of employee information, which includes the employee's unique id, his ...

  5. 网络IP和网络掩码以及网关的学习

    192.168.10.1/24,192.168.1.1/30是什么意思啊? 表示地址范围你把这些前面的值转换成2进制 就是变成一个32位的地址比如192.168.10.1就变成11000000.101 ...

  6. MVVM在WPF中应用(1)

    在软件行业浸润了这么多年,第一次在MES的工厂里从事软件开发. 在这里的感觉就是安静.宽松,比在那些专门以软件为主的企业中轻松自在.在这里的第一个项目是关于数据的导入和导出,还有数据的比较这些功能. ...

  7. CF613E Puzzle Lover

    题意 英文版题面 Problems Submit Status Standings Custom test .input-output-copier { font-size: 1.2rem; floa ...

  8. DBUtils和连接池

    今日内容介绍 1.DBUtils 2.连接池 ###01DButils工具类的介绍个三个核心类 * A: DButils工具类的介绍个三个核心类 * a: 概述 * DBUtils是java编程中的数 ...

  9. Writing and playing with custom Terraform Providers

    转自:https://petersouter.xyz/writing-and-playing-with-custom-terraform-providers/ I’ve been digging de ...

  10. Hasura GraphQL schema 生成是如何工作的

    不像大部分的graphql 引擎,使用标准的graphql 规范的处理模型,Hasura graphql 不存在resolver 的概念(实际上是有的,只是转换为了sql语法) 以下是Hasura g ...