步骤 2 : pom.xml 步骤 3 : qq邮箱 步骤 4 : 可运行项目
经过测试,是可以发送出去的。但是需要自己申请邮箱。 最好用 163的邮箱,没那么多问题,qq邮箱,foxmail,什么的都会出现奇奇怪怪的问题,不好调试。
package cn.how2j.test;
import static java.lang.annotation.ElementType.METHOD;
import static java.lang.annotation.ElementType.TYPE;
import java.lang.annotation.Documented;
import java.lang.annotation.Inherited;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
import java.lang.reflect.Method;
import org.junit.Before;
import org.junit.Test;
import cn.hutool.core.convert.Convert;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.io.FileUtil;
import cn.hutool.core.util.ReflectUtil;
import cn.hutool.core.util.StrUtil;
import cn.hutool.extra.mail.MailAccount;
import cn.hutool.extra.mail.MailUtil;
public class TestMail {
private MailAccount account;
@Before
public void prepareMailAccount() {
account = new MailAccount();
account.setHost("smtp.163.com");
account.setPort(25);
account.setAuth(true);
account.setFrom("test@163.com"); //假邮箱,请自己申请真实邮箱
account.setUser("test@163.com"); //假邮箱,请自己申请真实邮箱
account.setPass("testpassword"); //假密码,请自己申请真实邮箱
}
@Test
@Comment("发送普通文本")
public void test1(){
//因为账号密码不对,所以不能正确发送
//MailUtil.send(account,"test@163.com", "hutool 测试邮件" + DateUtil.now(), "测试内容", false);
}
@Test
@Comment("发送html邮件")
public void test2(){
//因为账号密码不对,所以不能正确发送
//MailUtil.send(account,"test@163.com", "hutool 测试邮件" + DateUtil.now(), "<p>测试内容</p>", true);
}
@Test
@Comment("发送带附件的邮件")
public void test3(){
//因为账号密码不对,所以不能正确发送
MailUtil.send(account,"test@163.com", "hutool 测试邮件" + DateUtil.now(), "<p>测试内容</p>", true, FileUtil.file("d:/test.txt"));
}
private String preComment = null;
private void c(String msg) {
System.out.printf("\t备注:%s%n",msg);
}
private void p1(String type1, Object value1, String type2, Object value2) {
p(type1, value1, type2, value2, "format1");
}
private void p2(String type1, Object value1, String type2, Object value2) {
p(type1, value1, type2, value2, "format2");
}
private void p3(String type1, Object value1) {
p(type1, value1, "", "", "format3");
}
private void p(String type1, Object value1, String type2, Object value2, String format) {
try {
throw new Exception();
} catch (Exception e) {
String methodName = getTestMethodName(e.getStackTrace());
Method m =ReflectUtil.getMethod(this.getClass(), methodName);
Comment annotation = m.getAnnotation(Comment.class);
if(null!=annotation) {
String comment= annotation.value();
if(!comment.equals(preComment)) {
System.out.printf("%n%s 例子: %n%n",comment);
preComment = comment;
}
}
}
int padLength = 12;
type1=StrUtil.padEnd(type1,padLength,Convert.toSBC(" ").charAt(0));
type2=StrUtil.padEnd(type2,padLength,Convert.toSBC(" ").charAt(0));
if("format1".equals(format)) {
System.out.printf("\t%s的:\t\"%s\" %n\t被转换为----->%n\t%s的 :\t\"%s\" %n%n",type1,value1, type2, value2);
}
if("format2".equals(format)) {
System.out.printf("\t基于 %s:\t\"%s\" %n\t获取 %s:\t\"%s\"%n%n",type1,value1, type2, value2);
}
if("format3".equals(format)) {
System.out.printf("\t%s:\t\"%s\" %n\t%n",type1,value1);
}
}
private String getTestMethodName(StackTraceElement[] stackTrace) {
for (StackTraceElement se : stackTrace) {
String methodName = se.getMethodName();
if(methodName.startsWith("test"))
return methodName;
}
return null;
}
@Target({METHOD,TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Inherited
@Documented
public @interface Comment {
String value();
}
}
从现在开始,都是需要第三方包 才能使用的 hutool 功能了
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>cn.how2j</groupId>
<artifactId>hutool</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>hutool</name>
<description>hutool</description>
<dependencies>
<dependency>
<groupId>cn.hutool</groupId>
<artifactId>hutool-all</artifactId>
<version>4.3.1</version>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.3.1</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>javax.mail</groupId>
<artifactId>mail</artifactId>
<version>1.4.7</version>
</dependency>
</dependencies>
</project>
关于qq邮箱如果要使用,密码要使用授权码。 授权码的获取手段:
https://service.mail.qq.com/cgi-bin/help?subtype=1&&id=28&&no=1001256
在右上角有本知识点对应的可运行项目下载 ,实在自己搞不出来,就下载解压出来比较一下。
HOW2J公众号,关注后实时获知最新的教程和优惠活动,谢谢。
问答区域
2019-08-02
发送报异常:Could not connect to SMTP host: smtp.163.com, port: 25, response: 554
回答已经提交成功,正在审核。 请于 我的回答 处查看回答记录,谢谢
2019-05-08
qq邮箱
回答已经提交成功,正在审核。 请于 我的回答 处查看回答记录,谢谢
提问之前请登陆
提问已经提交成功,正在审核。 请于 我的提问 处查看提问记录,谢谢
|