java 邮件ip_JavaMail SMTP服务器发送邮件程序示例 java通过dns服务器解析ip地址

这是一个Java程序示例,演示如何使用JavaMail通过SMTP服务器发送邮件。程序包括DNS解析以获取SMTP服务器主机名,并创建并发送包含内容的邮件。由于条件限制,实际运行可能不成功,因为可能需要验证。
摘要由CSDN通过智能技术生成

/**

* 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);

}

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值