我读了那个电子邮件程序联系人的作者的ISP电子邮件服务器来传递消息。
在以下程序中,我与SMTP
gmail
服务器成功建立连接。我想将此程序中的电子邮件(从gmail帐户)发送到rediff帐户。在这个程序中,我打开与rediff服务器的连接。但我成功发送了电子邮件。那个怎么样 ?我刚刚通过将到地址从gmail
更改为rediff进行了测试,并且成功了。这是程序:
// cross mail
import javax.mail.Authenticator;
import javax.mail.PasswordAuthentication;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
import java.util.Properties;
class crossmail {
public static void main(String args[]) {
Properties props = new Properties();
props.put("mail.smtp.host", "smtp.gmail.com");
props.put("mail.stmp.user", "from");
props.put("mail.smtp.starttls.enable", "true");
props.put("mail.smtp.password", "password");
props.put("mail.smtp.auth", "true");
Session session = Session.getDefaultInstance(props, new Athenticator() {
@Override
protected PasswordAuthentication getPasswordAuthentication() {
String username = "from";
String password = "paassword";
return new PasswordAuthentication("from", "paassword");
}
});
String to = "me@rediff";
String from = "from@gmail.com";
String subject = "Testing...";
MimeMessage msg = new MimeMessage(session);
try {
msg.setFrom(new InternetAddress(from));
msg.setRecipient(MimeMessage.RecipientType.TO, new InternetAddress(to));
msg.setSubject(subject);
msg.setText("Test Successfull...!");
Transport transport = session.getTransport("smtp");
transport.send(msg);
System.out.println("fine!!");
} catch(Exception exc) {
System.out.println(exc);
}
}
}
此电子邮件程序如何运作? 如果我理解错了,请更正。
答案 0 :(得分:5)
电子邮件应用程序RARELY直接联系收件人的电子邮件服务器。这不是他们想要的。相反,他们将联系您的本地SMTP服务器(在同一服务器或您的ISP上本地运行)并将邮件传递到该服务器。然后,该中间服务器执行查找处理收件人电子邮件和联系服务器的人员的辛勤工作。
该过程的一部分是查看收件人的电子邮件地址,例如fred@example.com,并在example.com
上执行DNS查找以获取该域的MX记录。那些(M)所有e(X)转换器记录指定域的“公共”邮件服务器,其中应发送传入邮件。
这使您和您的应用程序无需知道如何传送每一封邮件...您只需知道本地邮件服务器的位置即可。就像你不需要知道一封蜗牛信件如何从你到你的笔友 - 你只需要在信封上写一个地址并将其放入邮箱。邮政服务负责处理从A点到B点的所有细节。
答案 1 :(得分:0)
程序登录到gmail SMTP服务器并将消息传递给它。然后,gmail服务器将其转发到收件人电子邮件服务器。
SMTP - 简单邮件传输协议
电子邮件服务器基本上是用户之间的中继站
我发送到我的电子邮件服务器,然后查找您的电子邮件服务器并在那里发送邮件,您从电子邮件服务器收到邮件。