آموزش های این وب سایت به صورت رایگان در دسترس است. اطلاعات بیشتر
مشکل عدم دسترسی خریداران پیشین به برخی آموزش ها برطرف شد
بروز خطا
   [message]
اشتراک در سوال
رای ها
[dataList]

ارسال ایمیل smtp

Criss  10 سال پیش  7 سال پیش
+6 0

سلام دوستان من خیلی سرچ کردم و کلی سورس رو امتحان کردم

اما با هیچ کدوم موفق به ارسال ایمیل نشدم !!!

 

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/

 

 

اگر ممکنه راهنمایی کنید که چطور میشه با استفاده از اکانت جیمیل ایمیل فرستاد ؟

0 0
میخوای مستقیما از تو برنامه ات ایمیل بفرستی یا با برنامه gmail روی گوشی منظورته؟ (10 سال پیش)
 برای این سوال 5 پاسخ وجود دارد.
پاسخ به سوال 
Criss  10 سال پیش
+1 0

میخوام از درون برنامه با استفاده از سورس کد های 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  هم به اختیار میشه به اوناها اضاف کرد

+1 0
چرا از یه فایل php استفاده نمی کنید ؟ ، در غیر اینصورت باید با Intent ها کار کنید (10 سال پیش)
0 0
اگر ممکنه اموزش ارسال ایمیل php رو هم بزارید اما جیمیل رو ترجیح میدم < چون در صورت نبود هاست هم کارایی خودش رو داره (10 سال پیش)
پاسخ به سوال 
مجتبی یگانه  10 سال پیش
+5 0

ایمیل فرستادن با 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

0 0
چطوری میشه همراه با این ایمیل فایلی رو هم اتچ کرد؟ این ایمیل ها از پهنای باند هاست هم استفاده میکنه درسته ؟ (10 سال پیش)
0 0
بله ، از پهنای باند هم استفاده میکنه (10 سال پیش)
+1 0
این کد رو دیدم ولی نمیدونم چطور میشه ازش استفاده کرد ، میشه خیلی ساده توضیح بدین یا لینک برنامش رو واسم بفرستین ؟ من کار با فایل php داخل اندروید و ارتباط با وب رو هنوز بلد نیستم (10 سال پیش)
پاسخ به سوال 
Criss  8 سال پیش
+6 0

این کد بخوبی کار میکنه :

 

 
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;
}
}
}

لایبری مورد نیاز

+1 0
ممنون از معرفی اما هنوز یک مشکل کماکان وجود داره و اون هم اینه که ما پسورد را داریم در برنامه قرار می دهیم و به هر حال امنیت اون را نمی شه تضمین کرد. پیشنهاد من اینه که این مقادیر را از سرور به برنامه پاس بدیم (حتی پورت و هاست و ... را) تا هم امنیت بیشتر بشود و هم اینکه در صورت بروز مشکل بشه سریعا این مقادیر را تغییر داد. (8 سال پیش)
+1 0
ضمنا شاید استفاده از یک وب سرویس ارسال ایمیل راه حل مناسب تری باشه تا اطلاعات ایمیل حتی نیاز به پاس داده شدن هم نداشته باشه و فقط اطلاعات مربوط به متن و عنوان ایمیل از کلاینت اندرویدی به وب سرویس پاس داده بشه و وب سرویس نقش ارسال ایمیل را داشته باشه. فقط باید در ایجاد امنیت وب سرویس خیلی دقت کرد چرا که در صورت لو رفتن، می تونه به صورت یک اسپمر هولناک عمل کنه و دامنه شما یا ایمیل شما را به عنوان یک اسپمر در گوگل و ... معرفی کنه. (8 سال پیش)
پاسخ به سوال 
Criss  7 سال پیش
+1 0

برای اینکه بتونید با این روش ایمیل ارسال کنید و فایل هم بهش اضافه کنید متد زیر لازمه و چند کار دیگه

 
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" />

 

+1 0
ممنون که دانش خود رو به اشتراک گذاشتید (7 سال پیش)
پاسخ به سوال 
reza  7 سال پیش
0 0

                                          

+1 0
شما باید بجا /storage/emulated/legacy/log.txt آدرس فایل خودتون رو بدرستی وارد کنید (7 سال پیش)
0 0
DataHandler و FileDataSource شناخته نمیشن (7 سال پیش)
+1 0
حل شد چند تا لایبرری نیاز داشت (7 سال پیش)

پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .