我正在尝试直接点击按钮发送邮件而不使用此应用程序。实际上我复制了这个Code from Vinayak Bevinakatti。我遵循他的代码,但没有工作,我认为我有一个SDK VERSION的问题。
Build.app
android {
compileSdkVersion 26
defaultConfig {
applicationId "com.example.coorsdev.sendsms"
minSdkVersion 14
targetSdkVersion 26
versionCode 1
versionName "1.0"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}}
dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
implementation 'com.android.support:appcompat-v7:26.1.0'
implementation 'com.android.support.constraint:constraint-layout:1.0.2'
testImplementation 'junit:junit:4.12'
androidTestImplementation 'com.android.support.test:runner:1.0.1'
androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.1'}
答案 0 :(得分:1)
我建议这很酷library。这是非常简单的继承人如何只是改变链接,将其编译到你的项目
//Manifest
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
<uses-permission android:name="android.permission.INTERNET"/>
//Project gradle
repositories {
// ...
maven { url "https://jitpack.io" }
}
//Module gradle
compile 'com.github.yesidlazaro:GmailBackground:1.2.0'
然后使用你只需要在你的OnClick上创建一个实例
BackgroundMail.newBuilder(this)
.withUsername("username@gmail.com")
.withPassword("password12345")
.withMailto("toemail@gmail.com")
.withType(BackgroundMail.TYPE_PLAIN)
.withSubject("this is the subject")
.withBody("this is the body")
.withOnSuccessCallback(new BackgroundMail.OnSuccessCallback() {
@Override
public void onSuccess() {
//do some magic
}
})
.withOnFailCallback(new BackgroundMail.OnFailCallback() {
@Override
public void onFail() {
//do some magic
}
})
.send();
注意:您可以使用
在后台发送.withProcessVisibility(false)
希望这有帮助。
答案 1 :(得分:1)
通过JavaX Mail API发送邮件
//-----------SEND MAIL ASYNC Task-------------\\
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;
private ACProgressFlower 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, "Sending message", "Please wait...", false, false);
}
@Override
protected void onPostExecute(Void aVoid) {
super.onPostExecute(aVoid);
//Dismissing the progress dialog
//progressDialog.dismiss();
//Showing a success message
Toast.makeText(context, "Poll emailed", 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", "smtp.gmail.com");
props.put("mail.smtp.socketFactory.port", "465");
props.put("mail.smtp.socketFactory.class", "javax.net.ssl.SSLSocketFactory");
props.put("mail.smtp.auth", "true");
props.put("mail.smtp.port", "465");
//Creating a new session
session = Session.getDefaultInstance(props,
new javax.mail.Authenticator() {
//Authenticating the password
protected PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication(StaticValues.EMAIL, StaticValues.PASSWORD);
}
});
try {
//Creating MimeMessage object
MimeMessage mm = new MimeMessage(session);
//Setting sender address
mm.setFrom(new InternetAddress(StaticValues.EMAIL));
//Adding receiver
mm.addRecipient(Message.RecipientType.TO, new InternetAddress(email));
//Adding subject
mm.setSubject(subject);
//Adding message
mm.setText(message);
//Sending email
Transport.send(mm);
} catch (MessagingException e) {
e.printStackTrace();
}
return null;
}
}
像这样调用这个方法:
//------------------Send Mail using JavaX Mail API----------------------\\
SendMail sm = new SendMail(this, email, subject, message);
sm.execute();
//-----------------------------------------------------------------------\\
Gradle Dependencies:
// JavaX Mail \\
compile 'com.sun.mail:android-mail:1.5.5'
compile 'com.sun.mail:android-activation:1.5.5'
//-------------\\
项目级别Gradle
allprojects {
repositories {
jcenter()
maven { url "https://jitpack.io" }
maven { url "https://s3.amazonaws.com/repo.commonsware.com" }
maven { url "https://maven.java.net/content/groups/public/" }
}
}