新增:邮件发送支持IMAP协议(界面部分)

pull/86/head v2.2.1
pppscn 3 years ago
parent bb2d028b3c
commit a25ba3e22c

@ -362,7 +362,9 @@ public class SenderActivity extends AppCompatActivity {
final EditText editTextEmailPsw = view1.findViewById(R.id.editTextEmailPsw);
final EditText editTextEmailToAdd = view1.findViewById(R.id.editTextEmailToAdd);
final EditText editTextEmailTitle = view1.findViewById(R.id.editTextEmailTitle);
final RadioGroup radioGroupEmailProtocol = view1.findViewById(R.id.radioGroupEmailProtocol);
if (emailSettingVo != null) {
radioGroupEmailProtocol.check(emailSettingVo.getEmailProtocolCheckId());
editTextEmailHost.setText(emailSettingVo.getHost());
editTextEmailPort.setText(emailSettingVo.getPort());
switchEmailSSl.setChecked(emailSettingVo.getSsl());
@ -384,21 +386,31 @@ public class SenderActivity extends AppCompatActivity {
final AlertDialog show = alertDialog71.show();
buttonEmailOk.setOnClickListener(view -> {
String protocol = radioGroupEmailProtocol.getCheckedRadioButtonId() == R.id.radioEmailProtocolSmtp ? "SMTP" : "IMAP";
String host = editTextEmailHost.getText().toString().trim();
String port = editTextEmailPort.getText().toString().trim();
boolean ssl = switchEmailSSl.isChecked();
String fromEmail = editTextEmailFromAdd.getText().toString().trim();
String pwd = editTextEmailPsw.getText().toString().trim();
String toEmail = editTextEmailToAdd.getText().toString().trim();
String title = editTextEmailTitle.getText().toString().trim();
if (title.isEmpty()) title = "SmsForwarder Title";
String nickname = editTextEmailNickname.getText().toString().trim();
if (nickname.isEmpty()) nickname = "SmsForwarder";
if (host.isEmpty() || port.isEmpty() || fromEmail.isEmpty() || pwd.isEmpty() || toEmail.isEmpty()) {
Toast.makeText(SenderActivity.this, R.string.invalid_email, Toast.LENGTH_LONG).show();
return;
}
EmailSettingVo emailSettingVoNew = new EmailSettingVo(protocol, host, port, ssl, fromEmail, nickname, pwd, toEmail, title);
if (senderModel == null) {
SenderModel newSenderModel = new SenderModel();
newSenderModel.setName(editTextEmailName.getText().toString().trim());
newSenderModel.setType(TYPE_EMAIL);
newSenderModel.setStatus(STATUS_ON);
EmailSettingVo emailSettingVoNew = new EmailSettingVo(
editTextEmailHost.getText().toString().trim(),
editTextEmailPort.getText().toString().trim(),
switchEmailSSl.isChecked(),
editTextEmailFromAdd.getText().toString().trim(),
editTextEmailNickname.getText().toString().trim(),
editTextEmailPsw.getText().toString().trim(),
editTextEmailToAdd.getText().toString().trim(),
editTextEmailTitle.getText().toString().trim()
);
newSenderModel.setJsonSetting(JSON.toJSONString(emailSettingVoNew));
SenderUtil.addSender(newSenderModel);
initSenders();
@ -407,16 +419,6 @@ public class SenderActivity extends AppCompatActivity {
senderModel.setName(editTextEmailName.getText().toString().trim());
senderModel.setType(TYPE_EMAIL);
senderModel.setStatus(STATUS_ON);
EmailSettingVo emailSettingVoNew = new EmailSettingVo(
editTextEmailHost.getText().toString().trim(),
editTextEmailPort.getText().toString().trim(),
switchEmailSSl.isChecked(),
editTextEmailFromAdd.getText().toString().trim(),
editTextEmailNickname.getText().toString().trim(),
editTextEmailPsw.getText().toString().trim(),
editTextEmailToAdd.getText().toString().trim(),
editTextEmailTitle.getText().toString().trim()
);
senderModel.setJsonSetting(JSON.toJSONString(emailSettingVoNew));
SenderUtil.updateSender(senderModel);
initSenders();
@ -434,6 +436,7 @@ public class SenderActivity extends AppCompatActivity {
show.dismiss();
});
buttonEmailTest.setOnClickListener(view -> {
String protocol = radioGroupEmailProtocol.getCheckedRadioButtonId() == R.id.radioEmailProtocolSmtp ? "SMTP" : "IMAP";
String host = editTextEmailHost.getText().toString().trim();
String port = editTextEmailPort.getText().toString().trim();
boolean ssl = switchEmailSSl.isChecked();
@ -449,7 +452,7 @@ public class SenderActivity extends AppCompatActivity {
if (!host.isEmpty() && !port.isEmpty() && !fromEmail.isEmpty() && !pwd.isEmpty() && !toEmail.isEmpty()) {
try {
SenderMailMsg.sendEmail(0, handler, host, port, ssl, fromEmail, nickname, pwd, toEmail, title, R.string.test_content + (new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date())));
SenderMailMsg.sendEmail(0, handler, protocol, host, port, ssl, fromEmail, nickname, pwd, toEmail, title, R.string.test_content + (new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date())));
} catch (Exception e) {
Toast.makeText(SenderActivity.this, getString(R.string.failed_to_fwd) + e.getMessage(), Toast.LENGTH_LONG).show();
e.printStackTrace();

@ -1,5 +1,7 @@
package com.idormy.sms.forwarder.model.vo;
import com.idormy.sms.forwarder.R;
import java.io.Serializable;
import lombok.Data;
@ -14,11 +16,13 @@ public class EmailSettingVo implements Serializable {
private String pwd;
private String toEmail;
private String title;
private String protocol;
public EmailSettingVo() {
}
public EmailSettingVo(String host, String port, Boolean ssl, String fromEmail, String nickname, String pwd, String toEmail, String title) {
public EmailSettingVo(String protocol, String host, String port, Boolean ssl, String fromEmail, String nickname, String pwd, String toEmail, String title) {
this.protocol = protocol;
this.host = host;
this.port = port;
this.ssl = ssl;
@ -29,4 +33,11 @@ public class EmailSettingVo implements Serializable {
this.title = title;
}
public int getEmailProtocolCheckId() {
if (protocol == null || protocol.equals("SMTP")) {
return R.id.radioEmailProtocolSmtp;
} else {
return R.id.radioEmailProtocolImap;
}
}
}

@ -132,7 +132,7 @@ public class SendUtil {
EmailSettingVo emailSettingVo = JSON.parseObject(senderModel.getJsonSetting(), EmailSettingVo.class);
if (emailSettingVo != null) {
try {
SenderMailMsg.sendEmail(logId, handError, emailSettingVo.getHost(), emailSettingVo.getPort(), emailSettingVo.getSsl(), emailSettingVo.getFromEmail(), emailSettingVo.getNickname(),
SenderMailMsg.sendEmail(logId, handError, emailSettingVo.getProtocol(), emailSettingVo.getHost(), emailSettingVo.getPort(), emailSettingVo.getSsl(), emailSettingVo.getFromEmail(), emailSettingVo.getNickname(),
emailSettingVo.getPwd(), emailSettingVo.getToEmail(), smsVo.getTitleForSend(emailSettingVo.getTitle()), smsVo.getSmsVoForSend(smsTemplate));
} catch (Exception e) {
LogUtil.updateLog(logId, 0, e.getMessage());

@ -18,9 +18,9 @@ import io.reactivex.rxjava3.core.ObservableEmitter;
public class SenderMailMsg extends SenderBaseMsg {
private static final String TAG = "SenderMailMsg";
public static void sendEmail(final long logId, final Handler handError, final String host, final String port, final boolean ssl, final String fromEmail, final String nickname, final String pwd, final String toAdd, final String title, final String content) {
public static void sendEmail(final long logId, final Handler handError, final String protocol, final String host, final String port, final boolean ssl, final String fromEmail, final String nickname, final String pwd, final String toAdd, final String title, final String content) {
Log.d(TAG, "sendEmail: host:" + host + " port:" + port + " ssl:" + ssl + " fromEmail:" + fromEmail + " nickname:" + nickname + " pwd:" + pwd + " toAdd:" + toAdd);
Log.d(TAG, "sendEmail: protocol:" + protocol + " host:" + host + " port:" + port + " ssl:" + ssl + " fromEmail:" + fromEmail + " nickname:" + nickname + " pwd:" + pwd + " toAdd:" + toAdd);
Observable
.create((ObservableEmitter<Object> emitter) -> {

@ -33,6 +33,16 @@
tools:ignore="LabelFor,TextFields" />
</LinearLayout>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="10dp"
android:layout_marginStart="10dp"
android:text="@string/account"
android:textSize="14sp"
android:textColor="@color/colorBlueGreyDark"
tools:ignore="HardcodedText" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
@ -43,18 +53,18 @@
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/email_host" />
android:text="@string/email_account" />
<EditText
android:id="@+id/editTextEmailHost"
android:id="@+id/editTextEmailFromAdd"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="3dp"
android:autofillHints=""
android:ems="14"
android:inputType="text"
android:inputType="textEmailAddress"
android:text=""
tools:ignore="LabelFor,TextFields" />
tools:ignore="LabelFor" />
</LinearLayout>
<LinearLayout
@ -67,54 +77,91 @@
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/smtp_port" />
android:text="@string/email_password" />
<EditText
android:id="@+id/editTextEmailPort"
android:id="@+id/editTextEmailPsw"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="3dp"
android:autofillHints=""
android:ems="5"
android:inputType="text"
android:ems="14"
android:inputType="textPassword"
android:text=""
tools:ignore="LabelFor,TextFields" />
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginLeft="10dp"
android:layout_marginRight="10dp"
android:orientation="horizontal">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/enable_ssl" />
android:text="@string/email_nickname" />
<Switch
android:id="@+id/switchEmailSSl"
<EditText
android:id="@+id/editTextEmailNickname"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:checked="true"
tools:ignore="UseSwitchCompatOrMaterialXml" />
android:layout_marginStart="3dp"
android:autofillHints=""
android:ems="14"
android:inputType="text"
android:text=""
tools:ignore="LabelFor,TextFields" />
</LinearLayout>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="10dp"
android:layout_marginStart="10dp"
android:text="@string/servers"
android:textSize="14sp"
android:textColor="@color/colorBlueGreyDark"
tools:ignore="HardcodedText" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginLeft="10dp"
android:layout_marginRight="10dp"
android:orientation="horizontal">
android:layout_marginTop="5dp"
android:orientation="horizontal"
android:visibility="gone">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/email_account" />
android:paddingTop="5dp"
android:text="@string/email_protocol" />
<EditText
android:id="@+id/editTextEmailFromAdd"
<RadioGroup
android:id="@+id/radioGroupEmailProtocol"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="3dp"
android:autofillHints=""
android:ems="14"
android:inputType="textEmailAddress"
android:text=""
tools:ignore="LabelFor" />
android:orientation="horizontal">
<RadioButton
android:id="@+id/radioEmailProtocolSmtp"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:checked="true"
android:text="@string/email_smtp" />
<RadioButton
android:id="@+id/radioEmailProtocolImap"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/email_imap" />
</RadioGroup>
</LinearLayout>
<LinearLayout
@ -127,10 +174,10 @@
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/email_nickname" />
android:text="@string/email_host" />
<EditText
android:id="@+id/editTextEmailNickname"
android:id="@+id/editTextEmailHost"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="3dp"
@ -151,20 +198,42 @@
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/email_password" />
android:text="@string/smtp_port" />
<EditText
android:id="@+id/editTextEmailPsw"
android:id="@+id/editTextEmailPort"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="3dp"
android:autofillHints=""
android:ems="14"
android:inputType="textPassword"
android:ems="5"
android:inputType="text"
android:text=""
tools:ignore="LabelFor,TextFields" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/enable_ssl" />
<Switch
android:id="@+id/switchEmailSSl"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:checked="true"
tools:ignore="UseSwitchCompatOrMaterialXml" />
</LinearLayout>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="10dp"
android:layout_marginStart="10dp"
android:text="@string/email"
android:textSize="14sp"
android:textColor="@color/colorBlueGreyDark"
tools:ignore="HardcodedText" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
@ -241,7 +310,7 @@
android:layout_marginTop="5dp"
android:layout_marginBottom="5dp"
android:layout_weight="1"
android:background="@color/colorPrimary"
android:background="@color/colorBlueGrey"
android:text="@string/insert_sender"
tools:ignore="ButtonStyle,NestedWeights" />
@ -253,7 +322,7 @@
android:layout_marginTop="5dp"
android:layout_marginBottom="5dp"
android:layout_weight="1"
android:background="@color/colorPrimary"
android:background="@color/colorBlueGrey"
android:text="@string/insert_extra"
tools:ignore="ButtonStyle,NestedWeights" />
@ -265,7 +334,7 @@
android:layout_marginTop="5dp"
android:layout_marginBottom="5dp"
android:layout_weight="1"
android:background="@color/colorPrimary"
android:background="@color/colorBlueGrey"
android:text="@string/insert_time"
tools:ignore="ButtonStyle,NestedWeights" />
@ -277,7 +346,7 @@
android:layout_marginTop="5dp"
android:layout_marginBottom="5dp"
android:layout_weight="1"
android:background="@color/colorPrimary"
android:background="@color/colorBlueGrey"
android:text="@string/insert_device_name"
tools:ignore="ButtonStyle,NestedWeights" />

@ -122,8 +122,11 @@
<string name="dingding_token">Token e.g. the XXXXXX part of https://oapi.dingtalk.com/robot/send?access_token=XXXXXX</string>
<string name="dingding_secret">Secret (optional)</string>
<string name="dingding_at">At Mobiles e.g. 18888888888,19999999999</string>
<string name="email_host">SMTP Host</string>
<string name="smtp_port">SMTP Port</string>
<string name="email_protocol">Protocol</string>
<string name="email_smtp">SMTP</string>
<string name="email_imap">IMAP </string>
<string name="email_host">Server Host</string>
<string name="smtp_port">Server Port</string>
<string name="enable_ssl">SSL</string>
<string name="email_account">Account</string>
<string name="email_password">Password/Auth Code</string>
@ -238,4 +241,7 @@
<string name="pushplus_callback">Callback Url</string>
<string name="pushplus_valid_time">Valid time(secs)</string>
<string name="wechat">wechat</string>
<string name="account">✱Account</string>
<string name="servers">✱Servers</string>
<string name="email">✱Email</string>
</resources>

@ -122,10 +122,13 @@
<string name="dingding_token">设置Token 例如 https://oapi.dingtalk.com/robot/send?access_token=XXXXXX 中的 XXXXXX</string>
<string name="dingding_secret">加签 Secret (没有可不填)</string>
<string name="dingding_at">转发时@某人 填写某人的手机号,多个用逗号分开 例如18888888888,19999999999</string>
<string name="email_host">SMTP服务器</string>
<string name="smtp_port">SMTP端口</string>
<string name="email_protocol">协议类型</string>
<string name="email_smtp">SMTP</string>
<string name="email_imap">IMAP</string>
<string name="email_host">服务器地址</string>
<string name="smtp_port">服务器端口</string>
<string name="enable_ssl">开启SSL</string>
<string name="email_account">发件人帐号</string>
<string name="email_account">发件人邮箱</string>
<string name="email_password">登录密码/授权码</string>
<string name="email_nickname">发件人昵称</string>
<string name="email_to">收件地址</string>
@ -237,4 +240,7 @@
<string name="pushplus_callback">回调地址</string>
<string name="pushplus_valid_time">有效时间(秒)</string>
<string name="wechat">wechat</string>
<string name="account">✱帐户管理</string>
<string name="servers">✱服务器信息</string>
<string name="email">✱邮件设置</string>
</resources>

Loading…
Cancel
Save