Форум программистов, компьютерный форум, киберфорум
Наши страницы

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

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

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

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

Добрый день!!!!
Предистория вопроса: нужно отправить письмо на некий почтовый ящик нажатием одной кнопки на форме. Эта задача оказалась не сложной и при использовании данних ресурсов:
1) http://www.mkyong.com/android/how-to-send-email-in-android/
2) http://mobiledevtuts.com/android/android-sdk-smtp-email-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;
    }
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
12.04.2015, 19:38
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Android: Отправить e-maile испльзуя определленій канал связи (wi-fi, sim1, sim2) (Программирование Android):

Линия и канал связи - Сети
Добрый день, изучаю сети. Хотел уточнить два следующих термина: линия и канал связи. Линия связи - совокупность тех.средств и физической...

Резервный канал связи по Wi-Fi - Администрирование Windows
Доброго времени. Глупый вопрос. Есть сервер 2012, есть бухгалтер 1967, между ними сеть из витой пары и сеть из Wi-Fi, работают они между...

Шифрованный канал связи - C#
Доброго времени суток !!!! Я создаю среду для передачи документов через сеть интернет между пользователями мне нужно создать шифрованный...

Как проверить канал связи? - АСУ ТП
Дано: шкаф с винпаком в одной комнате, шкаф с определенного рода платой в другой комнате. Многожильный провод между этими комнатами. Идет...

Выставить порт на канал обратной связи - C# WCF
Соединяюсь по WSDualHttpBinding клиент подключается без проблем, но вот иногда жалуется что порт 80 занят. Оказывается это скайп. Как...

Беспроводной канал связи для робота - Робототехника
Ситуация такая.Есть Робот,между ним и компом нужно организовать беспроводной канал связи. Что нужно передать: 1)команды к движению. ...

0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
12.04.2015, 19:38
Привет! Вот еще темы с ответами:

Как сделать канал связи между программами? - C#
Нужна хотя бы идея и желательно ее реализация. Есть два компа (ну или больше) на каждом запущена одна и та же прога (winforms). К примера...

Влияет ли канал связи на время исполнения скрипта - PHP Сети
Здравствуйте... Есть &quot;домашний&quot; сервер, на котором хранится сайт: - Apache/2.2.21 (FreeBSD) mod_ssl/2.2.21 OpenSSL/0.9.8q DAV/2...

Какое ограничение накладывает канал связи на потоковое вещание? - Web
Просят организовать трансляцию набора видео с компьютера на сайт. Нашел достаточно удобный способ организации: ...

Juniper SRX240: какое из устройств сети забивает канал связи - Juniper
Буду краток. Есть Juniper SRX 240 подключен к сети(к нему подключен коммутатор, от него все оборудование), нужно узнать, какое из...


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

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Опции темы

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