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

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

Восстановить пароль Регистрация
 
WereWolf
 Аватар для WereWolf
0 / 0 / 0
Регистрация: 19.08.2009
Сообщений: 6
12.04.2015, 19:38     Android: Отправить e-maile испльзуя определленій канал связи (wi-fi, sim1, sim2) #1
Добрый день!!!!
Предистория вопроса: нужно отправить письмо на некий почтовый ящик нажатием одной кнопки на форме. Эта задача оказалась не сложной и при использовании данних ресурсов:
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)
Посмотрите здесь:

Android Откуда берутся атрибуты android:layout_width и android:layout_height в элементе LinearLayout?
Android Как отправить данные местоположения через ACTION SEND в приложении android?
Выбор мощного android смартфона до 10 рублей, для тестирования проектов Android Studio, что посоветуете? Android
Android Возможно отправить get запрос без сторонних библиотек используя лишь чистый Android Studio?
Android Email отправить письмо, как реализовать на android?
Android NDK. Как пользоваться? Когда стоит использовать его вместо Android SDK? Android
Android.support.v4.app.FragmentActivity не работает в Android Studio Android
Android Как приложение Android написать на С++ в Android NDK, чтоб получить *.apk? Нужен мануал
Android Перспективы разработки под Android в России в связи с санкциями
Android Подключение Android Annotations к Android Studio
Android Android studio, как запускать программу сразу на android смартфоне подключенному к usb?
Запуск игры mr.Nom через Android Studio (по книге марио цехнер программирование игр под android) Android

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

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

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