javaWebプロジェクトに統合されたメール送信機能

参照

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によってスパムとして扱われ、ゴミ箱に保管されていました。

おすすめ

転載: blog.csdn.net/qq_34902437/article/details/105723092