رفتن به مطلب
انجمن اندروید ایران | آموزش برنامه نویسی اندروید و موبایل
  • android.png.1fab383bc8500cd93127cebc65b1dcab.png

سوال : ارسال ایمیل بدون اینتنت


پست های پیشنهاد شده

با سلام خدمت دوستان گرامی و اساتید محترم 

بنده درگیر یه برنامه هستم و در برنامه احتیاج به ارسال ایمیل دارم . میشه یه نمونه کد بدید که بشه ایمیل ارسال بشه . اما نمیخوام که طوری بشه که یه اینتنت ایمیل باز بشه . میخوام از طریق خود برنامه ارسال بشه .

ممنون میشم

لینک ارسال
به اشتراک گذاری در سایت های دیگر

میتوانید بدین صورت هم عمل کنید :

 String to = "[email protected]";   String from = "[email protected]";   Properties properties = System.getProperties();   properties.setProperty("mail.smtp.host", SMPT_HOSTNAME);   Session session = Session.getInstance(properties, new Authenticator() {       @Override       protected PasswordAuthentication getPasswordAuthentication() {           return new PasswordAuthentication(USERNAME, PASSWORD);       }   });   try {       MimeMessage message = new MimeMessage(session);       message.setFrom(new InternetAddress(from));       message.addRecipient(Message.RecipientType.TO, new InternetAddress(               to));       message.setSubject("This is the Subject Line!");       message.setText("This is actual message");       Transport.send(message);       System.out.println("Sent message successfully....");   } catch (MessagingException mex) {       mex.printStackTrace();   }
لینک ارسال
به اشتراک گذاری در سایت های دیگر

شما به طریق زیر عمل کنید ( البته در این مثال از طریق اکانت گوگل ایمیل فرستاده می شود )

MailSenderActivity.java

YOUR PACKAGE;import android.app.Activity;import android.os.Bundle;import android.util.Log;import android.view.View;import android.widget.Button;public class MailSenderActivity extends Activity {   /** Called when the activity is first created. */   @Override   public void onCreate(Bundle savedInstanceState) {       super.onCreate(savedInstanceState);       setContentView(R.layout.main);       final Button send = (Button) this.findViewById(R.id.send);       send.setOnClickListener(new View.OnClickListener() {           public void onClick(View v) {               // TODO Auto-generated method stub               try {                      GMailSender sender = new GMailSender("[email protected]", "password");                   sender.sendMail("This is Subject",                              "This is Body",                              "[email protected]",                              "[email protected]");                  } catch (Exception e) {                      Log.e("SendMail", e.getMessage(), e);                  }            }       });   }}

GmailSender.java 

YOUR PACKAGE;import javax.activation.DataHandler;   import javax.activation.DataSource;   import javax.mail.Message;   import javax.mail.PasswordAuthentication;   import javax.mail.Session;   import javax.mail.Transport;   import javax.mail.internet.InternetAddress;   import javax.mail.internet.MimeMessage;   import java.io.ByteArrayInputStream;   import java.io.IOException;   import java.io.InputStream;   import java.io.OutputStream;   import java.security.Security;   import java.util.Properties;   public class GMailSender extends javax.mail.Authenticator {      private String mailhost = "smtp.gmail.com";      private String user;      private String password;      private Session session;      static {          Security.addProvider(new com.provider.JSSEProvider());      }     public GMailSender(String user, String password) {          this.user = user;          this.password = password;          Properties props = new Properties();          props.setProperty("mail.transport.protocol", "smtp");          props.setProperty("mail.host", mailhost);          props.put("mail.smtp.auth", "true");          props.put("mail.smtp.port", "465");          props.put("mail.smtp.socketFactory.port", "465");          props.put("mail.smtp.socketFactory.class",                  "javax.net.ssl.SSLSocketFactory");          props.put("mail.smtp.socketFactory.fallback", "false");          props.setProperty("mail.smtp.quitwait", "false");          session = Session.getDefaultInstance(props, this);      }      protected PasswordAuthentication getPasswordAuthentication() {          return new PasswordAuthentication(user, password);      }      public synchronized void sendMail(String subject, String body, String sender, String recipients) throws Exception {          try{       MimeMessage message = new MimeMessage(session);          DataHandler handler = new DataHandler(new ByteArrayDataSource(body.getBytes(), "text/plain"));          message.setSender(new InternetAddress(sender));          message.setSubject(subject);          message.setDataHandler(handler);          if (recipients.indexOf(',') > 0)              message.setRecipients(Message.RecipientType.TO, InternetAddress.parse(recipients));          else             message.setRecipient(Message.RecipientType.TO, new InternetAddress(recipients));          Transport.send(message);          }catch(Exception e){       }   }      public class ByteArrayDataSource implements DataSource {          private byte[] data;          private String type;          public ByteArrayDataSource(byte[] data, String type) {              super();              this.data = data;              this.type = type;          }          public ByteArrayDataSource(byte[] data) {              super();              this.data = data;          }          public void setType(String type) {              this.type = type;          }          public String getContentType() {              if (type == null)                  return "application/octet-stream";              else                 return type;          }          public InputStream getInputStream() throws IOException {              return new ByteArrayInputStream(data);          }          public String getName() {              return "ByteArrayDataSource";          }          public OutputStream getOutputStream() throws IOException {              throw new IOException("Not Supported");          }      }   }  

JSSE Provider

/**  Licensed to the Apache Software Foundation (ASF) under one or more*  contributor license agreements.  See the NOTICE file distributed with*  this work for additional information regarding copyright ownership.*  The ASF licenses this file to You under the Apache License, Version 2.0*  (the "License"); you may not use this file except in compliance with*  the License.  You may obtain a copy of the License at**     http://www.apache.org/licenses/LICENSE-2.0**  Unless required by applicable law or agreed to in writing, software*  distributed under the License is distributed on an "AS IS" BASIS,*  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.*  See the License for the specific language governing permissions and*  limitations under the License.*//*** @author Alexander Y. Kleymenov* @version $Revision$*/import java.security.AccessController;import java.security.Provider;public final class JSSEProvider extends Provider {   public JSSEProvider() {       super("HarmonyJSSE", 1.0, "Harmony JSSE Provider");       AccessController.doPrivileged(new java.security.PrivilegedAction() {           public Void run() {               put("SSLContext.TLS",                       "org.apache.harmony.xnet.provider.jsse.SSLContextImpl");               put("Alg.Alias.SSLContext.TLSv1", "TLS");               put("KeyManagerFactory.X509",                       "org.apache.harmony.xnet.provider.jsse.KeyManagerFactoryImpl");               put("TrustManagerFactory.X509",                       "org.apache.harmony.xnet.provider.jsse.TrustManagerFactoryImpl");               return null;           }       });   }}

همچنین سه فایل جار زیر رو به پروژه خودتون اضافه کنید :

همچنین دسترسی اینترنت رو در manifest تعریف کنید

لینک ارسال
به اشتراک گذاری در سایت های دیگر
  • 8 ماه بعد...

سلام خوبین ؟

اولا متشکر بابت کد

دوما من دقیقا کدها رو استفاده و فایلها رو دانلود و توی برنامه گذاشتم

اطلاعات جیمل رو هم گذاشتم

اما موقعی که روی سند میزنم

هیچ اتفاقی نمی افته

اینم لوگ:

05-13 10:42:36.282: W/ApplicationPackageManager(3285): getCSCPackageItemText()

05-13 10:42:36.412: I/Adreno-EGL(3285):

لینک ارسال
به اشتراک گذاری در سایت های دیگر
سلام دوست عزیز

این لینک و نگاه کنین شاید مشکل تون حل شه

http://www.oodlestechnologies.com/blogs/Send-Mail-in-Android-without-Using-Intent

لینک ارسال
به اشتراک گذاری در سایت های دیگر

به گفتگو بپیوندید

هم اکنون می توانید مطلب خود را ارسال نمایید و بعداً ثبت نام کنید. اگر حساب کاربری دارید، برای ارسال با حساب کاربری خود اکنون وارد شوید .

مهمان
ارسال پاسخ به این موضوع...

×   شما در حال چسباندن محتوایی با قالب بندی هستید.   حذف قالب بندی

  تنها استفاده از 75 اموجی مجاز می باشد.

×   لینک شما به صورت اتوماتیک جای گذاری شد.   نمایش به صورت لینک

×   محتوای قبلی شما بازگردانی شد.   پاک کردن محتوای ویرایشگر

×   شما مستقیما نمی توانید تصویر خود را قرار دهید. یا آن را اینجا بارگذاری کنید یا از یک URL قرار دهید.

×
×
  • اضافه کردن...