参照
QQメールボックスにメールを送信するJavaMailに基づく
Javajava.lang.NoClassDefFoundError:JavaメールのJUnitテストケースのcom / sun / mail / util / MailLogger
前に書く
現在、多くのWebプロジェクトでは、ユーザーに情報を通知するためにユーザーに電子メールを送信する機能、または登録機能を実現するためにメールボックスに確認コードを送信する機能が統合されています。したがって、このような関数を実装する方法は実際には非常に簡単です。
管理者メールボックスのSMTP機能を有効にする
例としてQQメールボックスを取り上げます。最初に、管理者(つまり、会社、Webサイトサーバー)は、メールボックスでSMTPサービスを開く必要があります。コンピュータネットワークでは、SMTPサービスを使用してメールを送信します。
QQメールボックスの[設定]-[アカウント]で、SMTP機能を有効にします。
開いた後、QQは、次のプログラムで使用されるAPIKEYと同等の認証コードを提供します。
メインコード
具体的なコードは次のとおりですが、異なるメールボックスの具体的なコードに特に注意してください。たとえば、QQメールボックスはSSL暗号化操作を提供する必要があり、jarはmavenによって管理されます。
<!-- 发送邮件依赖的 jar 包-->
<dependency>
<groupId>javax.mail</groupId>
<artifactId>javax.mail-api</artifactId>
<version>1.5.6</version>
</dependency>
<!-- MailSSLSocketFactory 加密的 jar 包 -->
<!-- 注意这里的版本是 1.5.3 如果是低版本,比如我之前用的 1.4.4 ,那么下面的核心代码中有类不能使用 -->
<dependency>
<groupId>com.sun.mail</groupId>
<artifactId>javax.mail</artifactId>
<version>1.5.3</version>
</dependency>
package com.www.utils;
import com.sun.mail.util.MailSSLSocketFactory;
import org.junit.Test;
import javax.mail.*;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
import java.security.GeneralSecurityException;
import java.util.Date;
import java.util.Properties;
public class MailUtil {
public void sendMail() throws GeneralSecurityException, MessagingException {
Properties props = new Properties();
// 开启debug调试
props.setProperty("mail.debug", "true");
// 发送服务器需要身份验证
props.setProperty("mail.smtp.auth", "true");
// 设置邮件服务器主机名
props.setProperty("mail.host", "smtp.qq.com");
// 发送邮件协议名称
props.setProperty("mail.transport.protocol", "smtp");
// ssl 加密
MailSSLSocketFactory sf = new MailSSLSocketFactory();
sf.setTrustAllHosts(true);
props.put("mail.smtp.ssl.enable", "true");
props.put("mail.smtp.ssl.socketFactory", sf);
Session session = Session.getInstance(props);
Message msg = new MimeMessage(session);
msg.setSubject("标题");
StringBuilder builder = new StringBuilder();
builder.append("内容");
builder.append("\n内容");
msg.setText(builder.toString());
msg.setFrom(new InternetAddress("发送者邮箱"));
Transport transport = session.getTransport();
transport.connect("smtp.qq.com", "发送者邮箱", "授权码");
transport.sendMessage(msg, new Address[] {
new InternetAddress("接收者邮箱") });
transport.close();
}
}
効果
問題
理由はわかりません。送信したメッセージはすべてTencentによってスパムとして扱われ、ゴミ箱に保管されていました。