ホームページ Java &#&チュートリアル Java は、JavaMail に基づいて QQ メールボックスへの電子メールの送信を実装します。

Java は、JavaMail に基づいて QQ メールボックスへの電子メールの送信を実装します。

Jan 16, 2017 am 09:49 AM

最近、ニュース クローラー プロジェクトに取り組んでおり、この機能を実装したいと考えています。ページのクロールが失敗した後、このページの URL をメールに送信します。最終的なレンダリングは次のとおりです。フィルター ラベル、障害ステータス コードなどを後で追加して、例外の分類と検索を容易にすることができます。

Java は、JavaMail に基づいて QQ メールボックスへの電子メールの送信を実装します。

開発者は、メール内の URL とスタック情報に基づいて、クローラーの失敗の理由を分析できます。

サーバーがダウンしていますか?

それとも、クローラーの Dom 解析がコンテンツを解析しないのでしょうか?

SMTP サービスをオンにしてください

で SMTP サービスをオンにしてください。 QQ メールボックスの [設定] -> [アカウント]

QQ メールボックスを開いた後、コード内のメールボックスに接続するには、この認証コードを使用して元のメールボックスのパスワードを使用しないようにしてください。プレーンテキストのパスワード。 Java は、JavaMail に基づいて QQ メールボックスへの電子メールの送信を実装します。

この記事 Java Mail (2): JavaMail の概要と簡単な電子メールを送信するためのサンプル コードを基にオンラインで例を確認しました Java は、JavaMail に基づいて QQ メールボックスへの電子メールの送信を実装します。

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");
 
Session session = Session.getInstance(props);
 
//邮件内容部分
Message msg = new MimeMessage(session);
msg.setSubject("seenews 错误");
StringBuilder builder = new StringBuilder();
builder.append("url = " + "http://blog.csdn.net/never_cxb/article/details/50524571");
builder.append("页面爬虫错误");
builder.append("\n data " + TimeTool.getCurrentTime());
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();
ログイン後にコピー

しかし、エラーが報告されました

DEBUG SMTP: AUTH LOGIN command trace suppressed
DEBUG SMTP: AUTH LOGIN failed
Exception in thread "main" javax.mail.AuthenticationFailedException: 530
Error: A secure connection is requiered(such as ssl). More information at http://service.mail.qq.com/cgi-bin/help?id=28
ログイン後にコピー

サンプル コードでは 163 メールボックスを使用しており、作成者は QQ メールボックスを使用しているため、ログ分析を見ると、QQ メールボックスには SSL 暗号化が必要であることがわかります。

SSL暗号化を有効にする

オンラインで検索したところ、163やSinaなどの他のメールボックスはSSL暗号化を必要としないことがわかりました。QQメールボックスをあきらめることができます。

インターネット上では、smtp.qq.com を smtp.exmail.qq.com に置き換えるには SSL 暗号化が必要ないという意見もありますが、作成者はそれを正常に実行しませんでした。それでは、SSL 暗号化を追加しましょう。

次のコードは SSL 暗号化を有効にします

MailSSLSocketFactory sf = new MailSSLSocketFactory();
sf.setTrustAllHosts(true);
props.put("mail.smtp.ssl.enable", "true");
props.put("mail.smtp.ssl.socketFactory", sf);
ログイン後にコピー

正常にコンソール出力されるログとレンダリングは次のとおりです

DEBUG SMTP: useEhlo true, useAuth true
DEBUG SMTP: trying to connect to host "smtp.qq.com", port 465, isSSL true
220 smtp.qq.com Esmtp QQ Mail Server
DEBUG SMTP: connected to host "smtp.qq.com", port: 465
...
 data 2016-01-19 17:00:44 Tue
.
250 Ok: queued as
QUIT
221 Bye
ログイン後にコピー

完全なコード例 Java は、JavaMail に基づいて QQ メールボックスへの電子メールの送信を実装します。

public class MailTool {
  public static void main(String[] args) throws MessagingException, GeneralSecurityException {
    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");
 
    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("seenews 错误");
    StringBuilder builder = new StringBuilder();
    builder.append("url = " + "http://blog.csdn.net/never_cxb/article/details/50524571");
    builder.append("\n页面爬虫错误");
    builder.append("\n时间 " + TimeTool.getCurrentTime());
    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();
  }
}
ログイン後にコピー

上記 これですべてです記事内容、皆様の学習のお役に立てれば幸いです。

QQ メールボックスに電子メールを送信する Java ベースの JavaMail ベースの実装については、PHP 中国語 Web サイトに注目してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)