package com.oa.modules.personnel.user.domain;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.util.Hashtable;
import java.util.Properties;
import javax.activation.DataHandler;
import javax.activation.FileDataSource;
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.MimeBodyPart;
import javax.mail.internet.MimeMessage;
import javax.mail.internet.MimeMultipart;
import javax.naming.Context;
import javax.naming.NamingException;
import javax.naming.directory.Attribute;
import javax.naming.directory.Attributes;
import javax.naming.directory.DirContext;
import javax.naming.directory.InitialDirContext;
public class MailSend {
public static String protocol = "smtp";
private String from = "hellojim@sina.com"; //发收人
private String to;
private String subject = "图文并茂的E-mail发送测试";
private String body = "图文并茂的E-mail发送测试<a href='http://hellojim.iteye.com'>Welcome access my blog my name is zhangxiaojun</a><br>" +
"<img src='cid:zxj'>";
private String server = "smtp.sina.com.cn";
public String getBody() {
return body;
}
public void setBody(String body) {
this.body = body;
}
public String getFrom() {
return from;
}
public void setFrom(String from) {
this.from = from;
}
public String getServer() {
return server;
}
public void setServer(String server) {
this.server = server;
}
public String getSubject() {
return subject;
}
public void setSubject(String subject) {
this.subject = subject;
}
public String getTo() {
return to;
}
public void setTo(String to) {
this.to = to;
}
public static void main(String[] args) throws Exception {
MailSend sender = new MailSend(); //实例化一个 MailSend 对象
sender.setTo("jim.zhang.js@gmail.com"); //设置一下收件人地址
boolean flg = sender.sendMessage(sender); //调用 sendMessage 就可以发送 E-mail
if(flg == true) {
System.out.println("哈哈...邮件发送成功");
} else {
System.out.println("呵呵...邮件发送失败");
}
}
//此方法根据传入的 session 创建一个E-mail 并返回
public MimeMessage createMessage(Session session,MailSend sender) throws Exception {
//创建一个邮件对象
MimeMessage message = new MimeMessage(session);
//设置 邮件 的发件人
message.setFrom(new InternetAddress(sender.from));
//设置 邮件 的收件人,及发送方法
message.setRecipients(Message.RecipientType.TO,InternetAddress.parse(sender.to));
//设置 邮件 的主题
message.setSubject(sender.subject);
MimeMultipart multipart = new MimeMultipart("related");
//创建一个邮件主体的文字部分
MimeBodyPart htmlBodyPart = new MimeBodyPart();
htmlBodyPart.setContent(body,"text/html;charset=gb2312");
multipart.addBodyPart(htmlBodyPart);
//创建一个邮件主体的图片部分
MimeBodyPart gifBodyPart = new MimeBodyPart();
FileDataSource fds = new FileDataSource("d:\\zxj.gif");
gifBodyPart.setDataHandler(new DataHandler(fds));
gifBodyPart.setContentID("zxj");
multipart.addBodyPart(gifBodyPart);
//设置 邮件 的主体部分(multipart 对象中包含了文字和图片两部分)
message.setContent(multipart);
//保存邮件这一步骤不能少
message.saveChanges();
return message;
}
//根据 收件人地址,发送 E-mail 如果发送成功返回 true ,否则返回 false
public boolean sendMessage(MailSend sender) {
Properties props = new Properties();
props.setProperty("mail.transport.protocol",MailSend.protocol);
props.setProperty("mail.smtp.auth","true");
props.setProperty("mail.host",sender.server);
MyAuthenticator myAuthenticator = new MyAuthenticator();
Session session = Session.getInstance(props,myAuthenticator);
session.setDebug(true);
try {
MimeMessage message = sender.createMessage(session,sender);
Transport transport = session.getTransport();
transport.connect();
transport.sendMessage(message,message.getRecipients(Message.RecipientType.TO));
transport.close();
}catch(Exception ex) {
ex.printStackTrace();
System.out.println("邮件发送失败!");
return false;
}
return true;
}
//根据 发送方 e-mail 地址中的 @ 后面部分,获得 该 e-mail 地址所在的 smtp 服务器
//目前这个方法没有调用,好象得到的 MX 用在以上程序中有些问题
public static String getSmtpServer(String domain,String dnsServer) throws NamingException {
Hashtable env = new Hashtable();
env.put(Context.INITIAL_CONTEXT_FACTORY,
"com.sun.jndi.dns.DnsContextFactory");
env.put(Context.PROVIDER_URL,"dns:" + dnsServer);
DirContext ctx = new InitialDirContext(env);
Attributes attrsAll = ctx.getAttributes(domain);
//Attributes attrsMx = ctx.getAttributes(domain,new String[]{"MX"});
Attribute attrMx = attrsAll.get("MX");
String firstValue = (String)attrMx.get();
return (firstValue.substring(firstValue.indexOf(" ") + 1));
}
}
针对上面的这个类文件,我有一个地方想请教大家一下,就是
private String server = "smtp.sina.com.cn"; 这句话不就是发送人的E-mail所属于的那个邮件服务器的地址吗?那么为什么我调用 getSmtpServer("sina.com",null); 这个方法(此方法的作用是得到MX记录啊) 得到的值是 freemx4.sinamail.sina.com.cn. 然后用此值给 server 变量 后,发送时就发送不成功,这是为什么???这地方我不一定以后就用 sina E-mail 去发邮件啊,也可能用 126 的,或 gmail 的,那么 server 的值又应给多少呢?或者从那里得到呢?请大家指教
分享到:
相关推荐
在C#和Asp.net环境中编写一个E-Mail发送程序是一项常见的任务,这通常涉及到网络通信、SMTP(简单邮件传输协议)服务和邮件格式的理解。以下是该程序涉及的主要知识点: 1. **SMTP协议**:SMTP是互联网上用于发送...
通过上述步骤,我们可以使用Visual Basic 5结合MAPI技术来开发一个基本的E-mail程序。虽然这里只介绍了核心的部分,但在实际开发过程中还可能遇到其他问题,比如错误处理、性能优化等。不过掌握了这些基础知识后,就...
在VB.NET中发送电子邮件是一个常见的任务,特别是在开发企业级应用或者需要自动化通信的场景下。以下是如何使用VB.NET实现SMTP(简单邮件传输协议)来发送邮件的详细步骤和相关知识点。 首先,我们需要引入`System...
本篇文章将深入探讨如何使用Visual Basic (VB) 开发一个简单的E-mail客户端程序。该程序基于VB技术实现,并提供了实用的源代码,这在其他地方可能难以找到。 #### 二、开发环境与工具 为了实现这一目标,我们需要...
在处理发送状态时,如果`$mail->send()`返回`false`,则表示发送失败,可以通过`$mail->ErrorInfo`获取错误信息;如果返回`true`,则表示发送成功。 在实际开发中,为了确保邮件发送的可靠性,通常会添加错误捕获和...
本教程将深入探讨如何利用ASP.NET控件和源码来创建一个能够发送邮件的Web应用程序。 首先,了解基本的邮件发送原理。在ASP.NET中,我们主要使用SmtpClient类和MailMessage类。SmtpClient类负责与SMTP(简单邮件传输...
在C++程序中,这些信息会被封装到一个结构体或类中,例如`CSmtp`可能有一个成员函数来设置这些字段。 2. **邮件体**:邮件体是邮件的实际内容,可以是纯文本或包含HTML格式。在VC 6.0的代码中,`Smtp.cpp`或`...
在Java编程环境中,发送普通文本格式的电子邮件是一个常见的任务,主要涉及到JavaMail API的使用。JavaMail API是一个开源库,允许开发者在Java应用程序中处理邮件的发送和接收。以下是一些关于如何使用Java发送普通...
我们使用`getTransport()`获取一个`Transport`实例,然后调用`connect()`方法连接到SMTP服务器,`send()`方法发送邮件。 在实际应用中,还需要考虑错误处理和异常捕获,确保邮件发送的稳定性。此外,对于敏感信息如...
总结来说,"jsp实例之E-mail"是一个关于使用JSP和JavaMail API在Web应用中实现邮件发送的实践案例。通过学习这个实例,开发者可以掌握如何配置邮件服务器参数、构建和发送邮件等核心技能,从而在实际项目中实现类似...
本项目“用Java实现E-mail客户端”就是一个基于JavaMail API的简单示例,旨在展示如何利用Java进行E-mail操作。 首先,JavaMail API提供了对SMTP(Simple Mail Transfer Protocol)和POP3(Post Office Protocol ...
本项目是一个使用C#编写的E-mail发送工具,它对于初学者来说是一个很好的学习资源,可以帮助他们理解如何利用C#进行网络通信,特别是处理SMTP(Simple Mail Transfer Protocol)协议来发送电子邮件。 首先,我们要...
标题中的"E-MAIL PROGRAM"指的是一个电子邮件程序,它允许用户登录ISP(Internet Service Provider,互联网服务提供商)的服务,以便发送邮件。在早期的互联网时代,这样的程序是常见的,因为并非所有用户都通过Web...
$mail->send(); echo "Message has been sent"; } catch (Exception $e) { echo "Message could not be sent. Mailer Error: {$mail->ErrorInfo}"; } } ?> ``` 在这个示例中,我们使用了PHPMailer库来构建和...
E-mail递交.htm是一个HTML文件,它可能包含了表单元素,如文本框、按钮等,用于收集用户输入的信息。在HTML中,`<form>`标签用于定义一个表单,而`<input>`标签则用来创建输入字段,如电子邮件地址。通常,表单会有...
本教程将深入探讨如何使用VB.NET编程语言创建一个基于QQ邮箱的邮件发送实例。QQ邮箱是中国最受欢迎的电子邮件服务之一,它提供了丰富的API接口供开发者使用。下面,我们将详细讲解如何在Windows 7环境下,利用Visual...
本文将详细解析如何使用C#编写...以上就是关于C#开发的发送E-Mail源代码的相关知识点。通过理解这些概念和代码示例,你应该能够创建一个功能完备的邮件发送程序。如果你在实践中遇到问题,欢迎通过邮件讨论,共同进步。
前几天自己做程序时,因为该 程序不能有窗体,所以需要用代码发送E-mail的方法,在网上到处没找到,就自己用Sakmail加了个发送Email的单元,就一个方法,大家不要骂我传垃圾啊。 //邮箱服务器地址,用户名,用户密码...
在这个示例中,我们创建了一个`sendEmail`方法,接收收件人邮箱、主题和正文作为参数,使用`JavaMailSender`发送邮件。 为了实际使用这个服务,可以在控制器或者业务逻辑中调用`sendEmail`方法,例如: ```java @...
以下是一个简单的C#示例: ```csharp using System.Web.Mail; MailMessage mail = new MailMessage(); mail.To = "me@mycompany.com"; mail.From = "you@yourcompany.com"; mail.Subject = "this is a test email....