Tôi đang cố gắng thiết lập JavaMail
để gửi và nhận email bằng cách sử dụng Postfix
, được cài đặt trên hộp phát triển CentOS7
của tôi. Tôi đã xác nhận rằng postfix
có thể hiển thị email đã nhận bằng cách nhập MAIL=/home/root/Maildir
vào thiết bị đầu cuối, sau đó quay lại và sau đó mail
, liệt kê tất cả email đã nhận cho tài khoản người dùng. Nhưng khi tôi đăng nhập với tư cách là người chủ và kiểm tra để xem các email đã nhận trong số CentOS 7 terminal
, không có email mới sau khi tôi chạy mã số Javamail
như được mô tả bên dưới. Tôi làm cách nào để có được Javamail
để gửi email smtp?JavaMail không gửi email SMTP qua postfix
Đây là lớp học của tôi:
import java.util.*;
import javax.mail.*;
import javax.mail.internet.*;
import javax.activation.*;
//Send a simple, single part, text/plain e-mail
public class TestEmail {
public void send(){
// SUBSTITUTE YOUR EMAIL ADDRESSES HERE!
String to = "[email protected]";
String from = "[email protected]";
// SUBSTITUTE YOUR ISP'S MAIL SERVER HERE!
String host = "localhost";
// Create properties, get Session
Properties props = new Properties();
//http://docs.oracle.com/javaee/6/api/javax/mail/Session.html
// If using static Transport.send(),
// need to specify which host to send it to
props.put("mail.smtp.host", host);
// To see what is going on behind the scene
props.put("mail.debug", "true");
Session session = Session.getInstance(props);
try {
// Instantiate a message
Message msg = new MimeMessage(session);
//Set message attributes
msg.setFrom(new InternetAddress(from));
InternetAddress[] address = {new InternetAddress(to)};
msg.setRecipients(Message.RecipientType.TO, address);
msg.setSubject("A new record was just added.");
msg.setSentDate(new Date());
// Set message content
msg.setText("This is a test of sending a " +
"plain text e-mail through Java.\n" +
"Here is line 2.");
//Send the message
Transport.send(msg);
}
catch (MessagingException mex) {
// Prints all nested (chained) exceptions as well
mex.printStackTrace();
}
}
}//End of class
tôi gọi là lớp như sau:
TestEmail em = new TestEmail();
em.send();
Các nhật thực console tạo ra các bản ghi sau khi mã trên được điều hành:
DEBUG: JavaMail version 1.5.0-b01
DEBUG: successfully loaded resource: /META-INF/javamail.default.providers
DEBUG: Tables of loaded providers
DEBUG: Providers Listed By Class Name: {com.sun.mail.smtp.SMTPSSLTransport=javax.mail.Provider[TRANSPORT,smtps,com.sun.mail.smtp.SMTPSSLTransport,Oracle], com.sun.mail.smtp.SMTPTransport=javax.mail.Provider[TRANSPORT,smtp,com.sun.mail.smtp.SMTPTransport,Oracle], com.sun.mail.imap.IMAPSSLStore=javax.mail.Provider[STORE,imaps,com.sun.mail.imap.IMAPSSLStore,Oracle], com.sun.mail.pop3.POP3SSLStore=javax.mail.Provider[STORE,pop3s,com.sun.mail.pop3.POP3SSLStore,Oracle], com.sun.mail.imap.IMAPStore=javax.mail.Provider[STORE,imap,com.sun.mail.imap.IMAPStore,Oracle], com.sun.mail.pop3.POP3Store=javax.mail.Provider[STORE,pop3,com.sun.mail.pop3.POP3Store,Oracle]}
DEBUG: Providers Listed By Protocol: {imaps=javax.mail.Provider[STORE,imaps,com.sun.mail.imap.IMAPSSLStore,Oracle], imap=javax.mail.Provider[STORE,imap,com.sun.mail.imap.IMAPStore,Oracle], smtps=javax.mail.Provider[TRANSPORT,smtps,com.sun.mail.smtp.SMTPSSLTransport,Oracle], pop3=javax.mail.Provider[STORE,pop3,com.sun.mail.pop3.POP3Store,Oracle], pop3s=javax.mail.Provider[STORE,pop3s,com.sun.mail.pop3.POP3SSLStore,Oracle], smtp=javax.mail.Provider[TRANSPORT,smtp,com.sun.mail.smtp.SMTPTransport,Oracle]}
DEBUG: successfully loaded resource: /META-INF/javamail.default.address.map
DEBUG: getProvider() returning javax.mail.Provider[TRANSPORT,smtp,com.sun.mail.smtp.SMTPTransport,Oracle]
DEBUG SMTP: useEhlo true, useAuth false
DEBUG SMTP: trying to connect to host "localhost", port 25, isSSL false
220 localhost.localdomain ESMTP Postfix
DEBUG SMTP: connected to host "localhost", port: 25
EHLO localhost.localdomain
250-localhost.localdomain
250-PIPELINING
250-SIZE 10240000
250-VRFY
250-ETRN
250-ENHANCEDSTATUSCODES
250-8BITMIME
250 DSN
DEBUG SMTP: Found extension "PIPELINING", arg ""
DEBUG SMTP: Found extension "SIZE", arg "10240000"
DEBUG SMTP: Found extension "VRFY", arg ""
DEBUG SMTP: Found extension "ETRN", arg ""
DEBUG SMTP: Found extension "ENHANCEDSTATUSCODES", arg ""
DEBUG SMTP: Found extension "8BITMIME", arg ""
DEBUG SMTP: Found extension "DSN", arg ""
DEBUG SMTP: use8bit false
MAIL FROM:<[email protected]>
250 2.1.0 Ok
RCPT TO:<[email protected]>
250 2.1.5 Ok
DEBUG SMTP: Verified Addresses
DEBUG SMTP: [email protected]
DATA
354 End data with <CR><LF>.<CR><LF>
Date: Mon, 5 Jan 2015 13:12:02 -0800 (PST)
From: [email protected]
To: [email protected]
Message-ID: <[email protected]in>
Subject: A new record was just added.
MIME-Version: 1.0
Content-Type: text/plain; charset=us-ascii
Content-Transfer-Encoding: 7bit
This is a test of sending a plain text e-mail through Java.
Here is line 2.
.
250 2.0.0 Ok: queued as DB1249A618
QUIT
221 2.0.0 Bye
sessionID is: 0816C244BDBAAD890D82138DC3801962
Lưu ý rằng bạn đang sử dụng phiên bản JavaMail khá cũ và có thể muốn nâng cấp lên [phiên bản hiện tại] (https://java.net/projects/javamail/pages/Home), mặc dù tôi chắc chắn rằng không liên quan gì đến vấn đề của bạn. –
@BillShannon Cảm ơn bạn! My 'pom.xml' nói rằng tôi đang sử dụng phiên bản 1.5.0, nhưng dường như tôi nên xem xét các mẫu mã mới hơn. – CodeMed