Spring中javaMail通过SMTP发送邮件
Sending e-mail with Spring MVC
http://jiangzhenghua.iteye.com/blog/333944
1、如果是maven项目,需要引入依赖包
[html] view plain copy
在CODE上查看代码片派生到我的代码片
<dependency>
<groupId>javax.mail</groupId>
<artifactId>mail</artifactId>
<version>1.4.4</version>
</dependency>
2、在项目加载的basic.xml中,配置两个bean:JavaMailSenderImpl和SimpleMailMessage,在后续发送邮件中通过这两个类进行发送。
[html] view plain copy
在CODE上查看代码片派生到我的代码片
<bean id="javaMailSender" class="org.springframework.mail.javamail.JavaMailSenderImpl">
<property name="host" >
<value>----</value>
</property>
<property name="port" >
<value type="java.lang.Integer">----</value>
</property>
<property name="protocol">
<value>smtps</value>
</property>
<property name="username">
<value>----</value>
</property>
<property name="password">
<value>----</value>
</property>
<!-- SMTP服务器验证 -->
<property name="javaMailProperties">
<props>
<!-- 验证身份 -->
<prop key="mail.smtps.auth">true</prop>
<prop key="mail.smtp.ssl.enable">true</prop>
<prop key="mail.transport.protocol">smtps</prop>
</props>
</property>
</bean>
<bean id="simpleMailMessage" class="org.springframework.mail.SimpleMailMessage">
<property name="from">
<value>${notify_service.smtp_mail.username}</value>
</property>
</bean>
3、在实际发送的class里面调用
[java] view plain copy
在CODE上查看代码片派生到我的代码片
private MailSender mailSender;
private SimpleMailMessage simpleMailMessage;
//初始化mailSender 和SimpleMailMessage 两个对象
simpleMailMessage.setTo(sendTo);
simpleMailMessage.setSubject(subject);
simpleMailMessage.setText(content);
mailSender.send(simpleMailMessage);
另外如果是发送HTML格式的邮件 参考:http://www.blogjava.Net/fancydeepin/archive/2012/06/12/spring-smtp-mail-with-attachment_maven3.html
[java] view plain copy
在CODE上查看代码片派生到我的代码片
import javax.mail.MessagingException;
import javax.mail.internet.MimeMessage;
import org.springframework.mail.SimpleMailMessage;
import org.springframework.mail.javamail.JavaMailSender;
import org.springframework.mail.javamail.MimeMessageHelper;
private JavaMailSender javaMailSender;
private MimeMessage mimeMessage;
private MimeMessageHelper mimeMessageHelper;
private SimpleMailMessage simpleMailMessage;
try {
[java] view plain copy
在CODE上查看代码片派生到我的代码片
mimeMessage = javaMailSender.createMimeMessage();
mimeMessageHelper = new MimeMessageHelper(mimeMessage,true,"GBK");
mimeMessageHelper.setFrom(simpleMailMessage.getFrom());
mimeMessageHelper.setTo(sendTo);
mimeMessageHelper.setSubject(subject);
mimeMessageHelper.setText(content);
javaMailSender.send(mimeMessage);
catch (MessagingException e) {
e.printStackTrace();
4、如果不用Spring直接用javamail发送
[java] view plain copy
在CODE上查看代码片派生到我的代码片
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
import javax.mail.internet.MimeUtility;
import javax.mail.Session;
import javax.mail.MessagingException;
import javax.mail.Transport;
public class SendHtmlMail {
public void sendmail(){
//创建邮件发送类 JavaMailSender
//用于发送基本的文本邮件信息(不能包括附件,及图片)
JavaMailSender sender = new JavaMailSenderImpl();
//设置邮件服务主机
((JavaMailSenderImpl)sender).setHost("smtp.sohu.com");
//发送者邮箱的用户名
((JavaMailSenderImpl)sender).setUsername("userName");
//发送者邮箱的密码
((JavaMailSenderImpl)sender).setPassword("password");
//配置文件,用于实例化java.mail.session
Properties pro = System.getProperties();
//登录SMTP服务器,需要获得授权,网易163邮箱新近注册的邮箱均不能授权。
//测试 sohu 的邮箱可以获得授权
pro.put("mail.smtp.auth", "true");
pro.put("mail.smtp.socketFactory.port", "25");
pro.put("mail.smtp.socketFactory.fallback", "false");
//通过文件获取信息
((JavaMailSenderImpl)sender).setJavaMailProperties(pro);
//创建基本邮件信息
MailMessage mailMessage = new SimpleMailMessage();
//发送者地址,必须填写正确的邮件格式,否者会发送失败
mailMessage.setFrom("******@sohu.com");
//邮件主题
mailMessage.setSubject("测试邮件");
//邮件内容,简单的邮件信息只能添加文本信息
mailMessage.setText("测试");
//邮件接收者的邮箱地址
mailMessage.setTo("******@qq.com");
//发送邮件,参数可以是数组
//sender.send(SimpleMailMessage[])
sender.send((SimpleMailMessage)mailMessage);
}
}
5、javaMail发送HTML个是的邮件
[java] view plain copy
在CODE上查看代码片派生到我的代码片
public void sendMimeMail() throws MessagingException{
//创建邮件发送类 JavaMailSender
//用于发送多元化邮件,包括附件,图片,html 等
JavaMailSender mimeMailSender = new JavaMailSenderImpl();
//设置邮件服务主机
((JavaMailSenderImpl)mimeMailSender).setHost("smtp.sohu.com");
//发送者邮箱的用户名
((JavaMailSenderImpl)mimeMailSender).setUsername("userName");
//发送者邮箱的密码
((JavaMailSenderImpl)mimeMailSender).setPassword("password");
//配置文件,用于实例化java.mail.session
Properties pro = System.getProperties();
//登录SMTP服务器,需要获得授权,网易163邮箱新近注册的邮箱均不能授权。
//测试 sohu 的邮箱可以获得授权
pro.put("mail.smtp.auth", "true");
pro.put("mail.smtp.socketFactory.port", "25");
pro.put("mail.smtp.socketFactory.fallback", "false");
((JavaMailSenderImpl)mimeMailSender).setJavaMailProperties(pro);
//创建多元化邮件
MimeMessage mimeMessage = ((JavaMailSenderImpl)mimeMailSender).createMimeMessage();
//创建 mimeMessage 帮助类,用于封装信息至 mimeMessage
MimeMessageHelper helper = new MimeMessageHelper(mimeMessage, true, "GBK");
//基本信息
//发送者地址,必须填写正确的邮件格式,否者会发送失败
helper.setFrom("*******@sohu.com");
//邮件主题
helper.setSubject("测试邮件");
//邮件内容,简单的邮件信息只能添加文本信息
helper.setText("测试");
//邮件接收者的邮箱地址
helper.setTo("******@qq.com");
//多元化信息
//添加HTML 信息
File myPicture = new File("C:\\Documents and Settings\\Administrator\\桌面\\kz2.jpg");
//如果是html代码,boolean 的参数用该为true
helper.setText("<html><head><meta http-equiv="+"Content-Type"+" content="+"text/html; charset=gb2312"+"></head><body><h1>新书快递通知</h1>你的新书快递申请已推送新书,请到<a href=''>空间"
+ "</a>中查看<br><img src='cid:myPicture'></body></html>", true);
//添加图片至HTML 代码中
helper.addInline("myPicture", myPicture);
//添加附件
File file = new File("C:\\Documents and Settings\\Administrator\\桌面\\validate.jar");
helper.addAttachment("picture", myPicture);
helper.addAttachment("picture", file);
((JavaMailSender)mimeMailSender).send(mimeMessage);
System.out.println("发送成功");
}
分享到:
相关推荐
为了在PHP中实现SMTP邮件发送,我们可以使用特定的类库,这里提到的是"php通过smtp发邮件的类.zip",它提供了一个PHP类,使得通过SMTP服务器发送邮件变得更加简单。下面我们将深入探讨这个主题。 首先,让我们了解...
1. **SMTP发邮件**:SMTP服务器在发送邮件时,遵循一系列步骤,包括连接到目标邮件服务器,身份验证(如果需要),发送邮件头信息(如From、To、Subject等),然后传输邮件正文。SMTP使用ASCII编码,支持7位字符集,...
VB通过集成的组件或第三方库如jmail.dll,可以方便地实现SMTP邮件发送功能。jmail.dll是一个邮件组件,它为VB应用程序提供了一整套邮件处理能力,包括发送、接收邮件以及管理邮件附件等。 在描述中提到,这个示例...
分析这个源码可以帮助我们理解VB结合WINSOCK控件如何实现SMTP邮件发送,并可以作为进一步开发或自定义邮件工具的基础。 总之,VB结合WINSOCK控件实现的SMTP发邮件工具提供了简单且灵活的邮件发送功能,特别是对于...
**SMTP邮件发送原理** SMTP(Simple Mail Transfer Protocol)是互联网上用于发送电子邮件的标准协议。它定义了客户端如何向服务器发送邮件以及服务器之间如何传递邮件的规则。在Java中,我们通常使用JavaMail API...
`PHPMailer`是一个广泛使用的开源库,它允许我们通过SMTP(Simple Mail Transfer Protocol)协议来发送邮件,并且支持添加附件和嵌入图片。本文将详细介绍如何利用`PHPMailer`类来实现这些功能。 首先,你需要下载`...
在C++和C中实现SMTP自动发邮件功能,开发者需要深入理解SMTP协议,并可能需要集成其他库来处理复杂的邮件格式和安全问题。同时,注意遵守ISP和邮件服务器的使用政策,避免被标记为垃圾邮件。 参考资源: 1. RFC ...
在SMTPMail.cs中,可能会定义一个或多个方法,如`SendMail(string from, string to, string subject, string body)`,这个方法接受发件人、收件人、主题和邮件正文作为参数,通过SMTP服务器发送邮件。代码中可能使用...
在PHP中,我们通常使用PHPMailer或者SwiftMailer这样的库来实现SMTP邮件发送功能,但也可以直接使用PHP的`stream_socket_client`函数进行低级别操作。 下面是一段使用PHPMailer库通过腾讯企业邮箱SMTP服务发送邮件...
总结一下,这个SMTP邮件发送程序使用C++编写,不依赖MFC,而是直接处理SMTP协议的细节。它包含一个SMTP类用于处理连接和发送命令,以及一个Base64编码类用于处理附件。通过MIME格式构造邮件,可以成功地发送包含任意...
在“smtp.rar”这个压缩包中,可能包含了一个用于实现SMTP发邮件功能的源代码示例。这样的程序通常允许用户输入邮件内容和收发件人信息,然后通过SMTP协议与邮件服务器交互,完成邮件发送。源代码可能使用了如Python...
SMTP(Simple Mail Transfer Protocol)和POP3(Post Office Protocol version 3)是电子邮件系统中的两个核心协议,分别用于发送和接收邮件。理解这两个协议的工作原理是掌握电子邮件技术的基础。 SMTP,简单邮件...
在本项目中,我们将探讨如何利用MFC(Microsoft Foundation Classes)库中的Socket功能来实现一个SMTP邮件发送客户端。 MFC是微软为Windows应用程序开发提供的C++类库,它封装了许多Windows API,使得开发者可以更...
在Linux环境中,有时我们需要使用外部SMTP服务器来发送邮件,特别是在sendmail服务被关闭或不可用的情况下。本教程将详细介绍如何在Linux(以RedHat 5为例)上配置使用外部SMTP服务器进行邮件发送。 首先,系统中...
3. **邮件构造**:类应该提供接口来设置邮件头部信息(如发件人、收件人、主题)和邮件正文。这可能包括`SetSender`、`AddRecipient`、`SetSubject`和`SetBody`等方法。 4. **附件处理**:如果`CSmtp`类支持发送...
SMTP(Simple Mail Transfer Protocol)是互联网上用于发送电子邮件的标准协议,而Java Mail是Java平台上的一个API,它允许开发者在程序中实现邮件的发送和接收功能。Java Mail API提供了丰富的接口和类,使得开发者...
前段时间公司有项目需要使用C#的SMTP 发邮件功能,在网上搜索了下,网上没有一个完整的解决方案,都是东说语句西说一句,几乎扯淡,对于我们这些伟大的程序员来说,就是完整的解决版本,所以直接上代码是最现实。...
在这个示例中,`SendEmail`方法接收发件人、收件人、主题和邮件正文作为参数,然后创建一个MailMessage实例来封装这些信息。SmtpClient类负责实际的邮件发送工作,需要设置SMTP服务器地址、端口、用户名和密码等信息...
本资源是一个发送邮件的例子,里面有完整的代码,要通过VS2017运行,项目是基于.NET core 2.1 的支持跨平台,亲测了163邮箱、以及QQ邮箱是没有问题的。另外有关开发中遇到的问题我写了博客,可以看附件里的文本。