Форум программистов, компьютерный форум CyberForum.ru

Программирование Android

Войти
Регистрация
Восстановить пароль
 
WereWolf
0 / 0 / 0
Регистрация: 19.08.2009
Сообщений: 6
#1

Android: Отправить e-maile испльзуя определленій канал связи (wi-fi, sim1, sim2) - Программирование Android

12.04.2015, 19:38. Просмотров 262. Ответов 0
Метки нет (Все метки)

Добрый день!!!!
Предистория вопроса: нужно отправить письмо на некий почтовый ящик нажатием одной кнопки на форме. Эта задача оказалась не сложной и при использовании данних ресурсов:
1) http://www.mkyong.com/android/how-to...il-in-android/
2) http://mobiledevtuts.com/android/and...mail-tutorial/

Сам вопрос: теперь нужно сделать то же самое, но предвартварительно определить нужний канал коммкуникации (в моём случае их три: wi-fi, sim1, sim2).

Заранее благодарен за ответ!!!

Привожу свой код:
Кликните здесь для просмотра всего текста

AndroidManifest.xml
XML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.company.my.myapplication"
    android:versionCode="1"
    android:versionName="1.0">
    <uses-sdk android:minSdkVersion="8" />
 
    <application android:label="@string/app_name">
        <activity android:name=".MainActivity"
            android:label="@string/app_name">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
 
    </application>
    <uses-permission android:name="android.permission.INTERNET"/>
 
</manifest>
activity_main.xml
XML
1
2
3
4
5
6
7
8
9
10
11
12
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    >
    <Button android:id="@+id/send_email"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text="Send Email"
        android:onClick="sendEmail"/>
</LinearLayout>
MainActivity.java
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
package com.company.my.myapplication;
 
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.Toast;
 
public class MainActivity extends Activity {
    private Mail m;
 
    /**
     * Called when the activity is first created.
     */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        m = new Mail("mymaile@mail.com", "myPWD");
    }
 
    public void sendEmail(View view) {
        String[] toArr = {"destination@mail.com"}; // This is an array, you can add more emails, just separate them with a coma
        m.setTo(toArr); // load array to setTo function
        m.setFrom("mymaile@mail.com"); // who is sending the email
        m.setSubject("test send");
        m.setBody("test send message from android device");
 
        try {
            if (m.send()) {
// success
                Toast.makeText(MainActivity.this, "Email was sent successfully.", Toast.LENGTH_LONG).show();
            } else {
// failure
                Toast.makeText(MainActivity.this, "Email was not sent.", Toast.LENGTH_LONG).show();
            }
        } catch (Exception e) {
// some other problem
            Toast.makeText(MainActivity.this, "There was a problem sending the email.\n" + e.toString(), Toast.LENGTH_LONG).show();
        }
 
    }
}
Mail.java
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
package com.company.my.myapplication;
 
import android.os.AsyncTask;
import android.util.Log;
 
import java.util.Date;
import java.util.Properties;
import javax.activation.CommandMap;
import javax.activation.DataHandler;
import javax.activation.DataSource;
import javax.activation.FileDataSource;
import javax.activation.MailcapCommandMap;
import javax.mail.BodyPart;
import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.Multipart;
import javax.mail.PasswordAuthentication;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeBodyPart;
import javax.mail.internet.MimeMessage;
import javax.mail.internet.MimeMultipart;
 
public class Mail extends javax.mail.Authenticator {
 
    private String _user;
    private String _pass;
 
    private String[] _to;
    private String _from;
 
    private String _port;
    private String _sport;
 
    private String _host;
 
    private String _subject;
    private String _body;
 
    private boolean _auth;
 
    private boolean _debuggable;
 
    private Multipart _multipart;
 
 
    public Mail() {
        _host = "smtp.gmail.com"; // default smtp server
        _port = "465"; // default smtp port
        _sport = "465"; // default socketfactory port
 
        _user = ""; // username
        _pass = ""; // password
        _from = ""; // email sent from
        _subject = ""; // email subject
        _body = ""; // email body
 
        _debuggable = false; // debug mode on or off - default off
        _auth = true; // smtp authentication - default on
 
        _multipart = new MimeMultipart();
 
// There is something wrong with MailCap, javamail can not find a handler for the multipart/mixed part, so this bit needs to be added.
        MailcapCommandMap mc = (MailcapCommandMap) CommandMap.getDefaultCommandMap();
        mc.addMailcap("text/html;; x-java-content-handler=com.sun.mail.handlers.text_html");
        mc.addMailcap("text/xml;; x-java-content-handler=com.sun.mail.handlers.text_xml");
        mc.addMailcap("text/plain;; x-java-content-handler=com.sun.mail.handlers.text_plain");
        mc.addMailcap("multipart/*;; x-java-content-handler=com.sun.mail.handlers.multipart_mixed");
        mc.addMailcap("message/rfc822;; x-java-content-handler=com.sun.mail.handlers.message_rfc822");
        CommandMap.setDefaultCommandMap(mc);
    }
 
    public Mail(String user, String pass) {
        this();
 
        _user = user;
        _pass = pass;
    }
 
    public boolean send() throws Exception {
        Properties props = _setProperties();
 
        if(!_user.equals("") && !_pass.equals("") && _to.length > 0 && !_from.equals("") && !_subject.equals("") && !_body.equals("")) {
            Session session = Session.getInstance(props, this);
 
            final MimeMessage msg = new MimeMessage(session);
 
            msg.setFrom(new InternetAddress(_from));
 
            InternetAddress[] addressTo = new InternetAddress[_to.length];
            for (int i = 0; i < _to.length; i++) {
                addressTo[i] = new InternetAddress(_to[i]);
            }
            msg.setRecipients(MimeMessage.RecipientType.TO, addressTo);
 
            msg.setSubject(_subject);
            msg.setSentDate(new Date());
 
// setup message body
            BodyPart messageBodyPart = new MimeBodyPart();
            messageBodyPart.setText(_body);
            _multipart.addBodyPart(messageBodyPart);
 
// Put parts in message
            msg.setContent(_multipart);
 
// send email
            new AsyncTask<Void,Void,Void>(){
 
                @Override
                protected Void doInBackground(Void... params) {
                    try {
                        Transport.send(msg);
                    } catch (MessagingException e) {
                        e.printStackTrace();
                    }
                    return null;
                }
            }.execute();
 
 
            return true;
        } else {
            return false;
        }
    }
 
    public void addAttachment(String filename) throws Exception {
        BodyPart messageBodyPart = new MimeBodyPart();
        DataSource source = new FileDataSource(filename);
        messageBodyPart.setDataHandler(new DataHandler(source));
        messageBodyPart.setFileName(filename);
 
        _multipart.addBodyPart(messageBodyPart);
    }
 
    @Override
    public PasswordAuthentication getPasswordAuthentication() {
        return new PasswordAuthentication(_user, _pass);
    }
 
    private Properties _setProperties() {
        Properties props = new Properties();
 
        props.put("mail.smtp.host", _host);
 
        if(_debuggable) {
            props.put("mail.debug", "true");
        }
 
        if(_auth) {
            props.put("mail.smtp.auth", "true");
        }
 
        props.put("mail.smtp.port", _port);
        props.put("mail.smtp.socketFactory.port", _sport);
        props.put("mail.smtp.socketFactory.class", "javax.net.ssl.SSLSocketFactory");
        props.put("mail.smtp.socketFactory.fallback", "false");
 
        return props;
    }
 
    // the getters and setters
    public String getBody() {
        return _body;
    }
 
    public void setBody(String _body) {
        this._body = _body;
    }
 
    public void setTo(String[] toArr) {
        this._to = toArr;
    }
 
    public void setFrom(String string) {
        this._from = string;
    }
 
    public void setSubject(String string) {
        this._subject = string;
    }
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
12.04.2015, 19:38     Android: Отправить e-maile испльзуя определленій канал связи (wi-fi, sim1, sim2)
Посмотрите здесь:

Email отправить письмо, как реализовать на android? - Программирование Android
Как реализовать отправку почты (желательно с файлом) Есть такой код на java // TODO Auto-generated method stub Properties props...

Перспективы разработки под Android в России в связи с санкциями - Программирование Android
Добрый день! Давно занимаюсь разработкой десктопных приложений на c#. Хочу также попробовать писать и продавать приложения под Андроид...

Как отправить данные местоположения через ACTION SEND в приложении android? - Программирование Android
Здравствуйте!На этом сайте ССЫЛКА я нашел решение для определения своего местоположения. Переменные,в которых находятся координаты...

Возможно отправить get запрос без сторонних библиотек используя лишь чистый Android Studio? - Программирование Android
И возможно ли реализовать при помощи них регистрацию + авторизацию?

Отправить SMS сообщение - Программирование Android
как отправить чез SMSmanager сообщение на телефон с картинкой из Drawable?

Отправить файл на сервер - Программирование Android
Всем привет! Первый раз пишу на форуме, уже несколько дней бился над отправкой файла на сервер, но никак не получается. Приведите...

Связи классов - Программирование Android
Здравствуйте, такой вопрос, есть модели описанные через структуры для удобства манипуляций с бд например public static ...

Как программно отправить письмо? - Программирование Android
Привет всем. И меня возник вопрос ,ответа я не нашел на форуме. как пользователю отправить письмо из главного окна приложения не...

Как отправить String по Bluetooth - Программирование Android
Как отправить, чтобы было именно String, а не через массив байтов

Как отправить переменную на сервер - Программирование Android
Здравствуйте. У меня банальный вопрос..Есть например в андроид программе переменная которую я хочу отправить на сервер(php чисто для...

Усиление сотовой связи - Программирование Android
Здравствуйте уважаемые форумчане. В загородном доме установлена система усиления сотовой связи-работает отлично но только когда телефон...

Отправить по TCP большое целое число - Программирование Android
Как правильно отправить по TCP большое целое число, которое не вмещается в 1 байт, например 1024 ?? Какой класс и функцию для этого...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru