ارسال ایمیل smtp
سلام دوستان من خیلی سرچ کردم و کلی سورس رو امتحان کردم
اما با هیچ کدوم موفق به ارسال ایمیل نشدم !!!
http://stackoverflow.com/questions/16421706/how-do-you-send-mail-in-android-using-javamail-api
http://blog.dahanne.net/2013/06/17/sending-a-mail-in-java-and-android-with-apache-commons-net/
http://mobiledevtuts.com/android/android-sdk-smtp-email-tutorial/
http://snipplr.com/view/16645/sending-email-on-android-by-smtp-gmail/
اگر ممکنه راهنمایی کنید که چطور میشه با استفاده از اکانت جیمیل ایمیل فرستاد ؟
میخوام از درون برنامه با استفاده از سورس کد های smtp با استفاده از جیمیل ایمیل ارسال کنم
smtpserver = "smtp.gmail.com"
smtpserverport = 465
smtpusessl = True
username= "user@gmail.com"
password = "passwd"
body = "text"
subject = "sub"
to = "user1@yahoo.com,user3@gmail.com"
bcc = "user3@gmail.com
attachment = "sdcard/media/file.jpg"
برای مثال توی اکثر سورس های visualbasic یا vbscript یا powershell یا php و ... مشخصات اصلی اینهایی هست که بالا گذاشتم <
که متد های bcc , atachment هم به اختیار میشه به اوناها اضاف کرد
ایمیل فرستادن با php بسیار سادست ! ، فقط روی لوکال هاست با تنظیمات پیشفرض نیمشه فرستاد ، بهتره روی هاست تست کنید
http://php.net/manual/en/function.mail.php
mail ( string$to
, string$subject
, string$message
[, string$additional_headers
[,string$additional_parameters
]] )
mail('mail@server.com','subject','message');
پیوست فایل
http://stackoverflow.com/questions/826265/simple-php-form-attachment-to-email-code-golf
این کد بخوبی کار میکنه :
import java.io.UnsupportedEncodingException;
import java.util.Properties;
import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.PasswordAuthentication;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.AddressException;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
import android.app.Activity;
import android.app.ProgressDialog;
import android.os.AsyncTask;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.Toast;
public class TestEmail extends Activity {
private static final String username = "EMAIL@gmail.com";
private static final String password = "PASSWORD";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Button sendButton = (Button) findViewById(R.id.send_email);
sendButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
String email = "EMAIL@gmail.com";
String subject = "SUB";
String message = "MSG";
sendMail(email, subject, message);
}
});
}
private void sendMail(String email, String subject, String messageBody) {
Session session = createSessionObject();
try {
Message message = createMessage(email, subject, messageBody, session);
new SendMailTask().execute(message);
}
catch (AddressException e) {
e.printStackTrace();
}
catch (MessagingException e) {
e.printStackTrace();
}
catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
}
private Message createMessage(String email, String subject, String messageBody, Session session) throws MessagingException, UnsupportedEncodingException {
Message message = new MimeMessage(session);
message.setFrom(new InternetAddress("EMAIL@gmail.com", "New Sell"));
message.addRecipient(Message.RecipientType.TO, new InternetAddress(email, email));
message.setSubject(subject);
message.setText(messageBody);
return message;
}
private Session createSessionObject() {
Properties properties = new Properties();
properties.put("mail.smtp.auth", "true");
properties.put("mail.smtp.starttls.enable", "true");
properties.put("mail.smtp.host", "smtp.gmail.com");
properties.put("mail.smtp.port", "587");
return Session.getInstance(properties, new javax.mail.Authenticator() {
@Override
protected PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication(username, password);
}
});
}
private class SendMailTask extends AsyncTask<Message, Void, Void> {
private ProgressDialog progressDialog;
@Override
protected void onPreExecute() {
super.onPreExecute();
progressDialog = ProgressDialog.show(TestEmail.this, "لطفا صبر کنید", "در حال ارسال اطلاعات سفارش", true, false);
}
@Override
protected void onPostExecute(Void aVoid) {
super.onPostExecute(aVoid);
progressDialog.dismiss();
Toast.makeText(getBaseContext(), "سفارش با موفقیت ثبت شد.", Toast.LENGTH_LONG).show();
finish();
}
@Override
protected Void doInBackground(Message... messages) {
try {
Transport.send(messages[0]);
}
catch (MessagingException e) {
e.printStackTrace();
}
return null;
}
}
}
برای اینکه بتونید با این روش ایمیل ارسال کنید و فایل هم بهش اضافه کنید متد زیر لازمه و چند کار دیگه
private void attachFile(Message message, String filePath) {
try {
String filename = "example_filename";
Multipart _multipart = new MimeMultipart();
BodyPart messageBodyPart = new MimeBodyPart();
DataSource source = new FileDataSource(filePath);
messageBodyPart.setDataHandler(new DataHandler(source));
messageBodyPart.setFileName(filename);
_multipart.addBodyPart(messageBodyPart);
message.setContent(_multipart);
}
catch (MessagingException e) {
e.printStackTrace();
}
}
و توی قسمت زیر استفاده کنید :
@Override
protected Void doInBackground(Message... messages) {
try {
attachFile(messages[0], "/storage/emulated/legacy/log.txt");
Transport.send(messages[0]);
}
catch (MessagingException e) {
e.printStackTrace();
}
return null;
}
پرمیژن زیر هم فراموش نکنید که اضاف کنید :
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .