gpt4 book ai didi

android - 使用 Javamail 发送电子邮件

转载 作者:行者123 更新时间:2023-12-02 01:00:05 24 4
gpt4 key购买 nike

我正在尝试使用 Javamail 发送电子邮件,因为它似乎是使用 SMTP 发送电子邮件的唯一方式。

我搜索了一些帖子,例如: Sending mail in android without intents using SMTP

但是,我希望发件人是我自己的域,而不是 gmail。

所以我尝试了:

    final String username = "admin@customsite.com";
final String password = "password";

Properties props = new Properties();
props.put("mail.smtp.auth", "true");
props.put("mail.smtp.starttls.enable", "true");
props.put("mail.smtp.host", "smtp.customsite.com");
props.put("mail.smtp.port", "587");

Session session = Session.getInstance(props,
new javax.mail.Authenticator() {
protected PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication(username, password);
}
});
try {
Message message = new MimeMessage(session);
message.setFrom(new InternetAddress("admin@customsite.com"));
message.setRecipients(Message.RecipientType.TO,
InternetAddress.parse("username@gmail.com"));
message.setSubject("Hello there");
message.setText("This is a test email");
Transport.send(message);
Log.d("EmailClient", "Success");
} catch (MessagingException e) {
throw new RuntimeException(e);
}

但是好像不行。

最佳答案

我一周前也做过同样的事情,这里是我的代码,使用自定义 smtp

类 SendMail.JAVA ,我在 Config.JAVA 中有密码和邮件帐户,请注意我的服务器在端口 25 上运行并且没有 SSL

public class SendMail extends AsyncTask<Void,Void,Void> {

//Declaring Variables
private Context context;
private Session session;

//Information to send email
private String email;
private String subject;
private String message;

//Progressdialog to show while sending email
private ProgressDialog progressDialog;

//Class Constructor
public SendMail(Context context, String email, String subject, String message){
//Initializing variables
this.context = context;
this.email = email;
this.subject = subject;
this.message = message;
}

@Override
protected void onPreExecute() {
super.onPreExecute();
//Showing progress dialog while sending email
progressDialog = ProgressDialog.show(context,"Enviando mail","Espere por favor...",false,false);
}

@Override
protected void onPostExecute(Void aVoid) {
super.onPostExecute(aVoid);
//Dismissing the progress dialog
progressDialog.dismiss();
//Showing a success message
Toast.makeText(context,"Mail enviado",Toast.LENGTH_LONG).show();
}

@Override
protected Void doInBackground(Void... params) {
//Creating properties
Properties props = new Properties();

//Configuring properties for gmail
//If you are not using gmail you may need to change the values
props.put("mail.smtp.host", "Custom SMTP");
props.put("mail.smtp.auth", "true");
props.put("mail.smtp.port", "25");

//Creating a new session
session = Session.getDefaultInstance(props,
new javax.mail.Authenticator() {
//Authenticating the password
protected PasswordAuthentication getPasswordAuthentication() {

return new PasswordAuthentication(Config.EMAIL, Config.PASSWORD);
}
});

try {
//Creating MimeMessage object
MimeMessage mm = new MimeMessage(session);

//Setting sender address
mm.setFrom(new InternetAddress(Config.EMAIL));
//Adding receiver
mm.addRecipient(Message.RecipientType.TO, new InternetAddress(email));
//Adding subject
mm.setSubject(subject);
//Adding message
mm.setText(message, "utf-8", "html");

//Sending email
Transport.send(mm);

} catch (MessagingException e) {
e.printStackTrace();
}
return null;
}

Activity 中的示例实现

private void sendEmail() {
//Getting content for email
String email = asd.getText().toString();
String subject = "Presupuesto plaza hogar";
String message = body.toString();

//Creating SendMail object
SendMail sm = new SendMail(this, email, subject, message);

//Executing sendmail to send email
sm.execute();
}

关于android - 使用 Javamail 发送电子邮件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51263484/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com