#java #android #android-studio #email #jakarta-mail
Вопрос:
У меня очень мало знаний о Java и работе с Android. Я пытался создать очень простое приложение для Android, которое будет отправлять фотографии до/после в качестве вложения. Это было довольно просто настроить то, что у меня уже есть, однако у меня было много проблем с добавлением вложений в мои электронные письма. После того, как я часами возился с кодом, стирая и перезапуская его несколько раз, я подумал, что было бы лучше всего попросить о помощи.
Вот все, что у меня есть на данный момент, это правильная отправка электронных писем. Я просто не понимаю, как включить намерение пользователя выбрать изображение из галереи, а затем использовать их выбор с помощью JavaMail, чтобы на самом деле прикрепить его к электронной почте.
Спасибо 🙂
MAINACTIVITY.JAVA
public class MainActivity extends AppCompatActivity {
private Spinner email;
private EditText subject, message;
private Button btn;
Button beforeAttachment;
Button afterAttachment;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
email = findViewById(R.id.email);
subject = findViewById(R.id.subject);
message = findViewById(R.id.message);
beforeAttachment = (Button) findViewById(R.id.beforeAttachment);
afterAttachment = (Button) findViewById(R.id.afterAttachment);
btn = findViewById(R.id.btn);
ArrayAdapter<String> myAdapter = new ArrayAdapter<String>(MainActivity.this,
android.R.layout.simple_list_item_1, getResources().getStringArray(R.array.names));
myAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
email.setAdapter(myAdapter);
//attachment button listener
beforeAttachment.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
onPickPhoto(v);
}
});
btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
senEmail();
}
});
}
//Attachment--------------------------------------------------------------------------------------------
// Trigger gallery selection for a photo
public void onPickPhoto(View view) {
// Create intent for picking a photo from the gallery
Intent intent = new Intent(Intent.ACTION_PICK);
intent.setType("image/*");
intent.putExtra(Intent.EXTRA_ALLOW_MULTIPLE, true);
}
//------------------------------------------------------------------------------------------------------
public void senEmail() {
try {
String mEmail = email.getSelectedItem().toString();
String mSubject = subject.getText().toString();
String mMessage = message.getText().toString();
JavaMailAPI javaMailAPI = new JavaMailAPI(this, mEmail, mSubject, mMessage);
javaMailAPI.execute();
}
catch (Throwable t)
{
Toast.makeText(this, "Request failed try again: " t.toString(),Toast.LENGTH_LONG).show();
}
}
}
JAVAMAILAPI.java
ublic class JavaMailAPI extends AsyncTask<Void, Void, Void> {
private Context context;
private Session session;
private String email, subject, message;
private ProgressDialog progressDialog;
public JavaMailAPI(Context context, String email, String subject, String message) {
this.context = context;
this.email = email;
this.subject = subject;
this.message = message;
}
//Execute progress Dialog
@Override
protected void onPreExecute() {
super.onPreExecute();
progressDialog = ProgressDialog.show(context, "Sending message", "Please wait...",false,false);
}
//Execution notification
@Override
protected void onPostExecute(Void aVoid) {
super.onPostExecute(aVoid);
//Dismissing the progress dialog
progressDialog.dismiss();
Toast.makeText(context,"Message Sent",Toast.LENGTH_LONG).show();
}
//API/SMTP Information
@Override
protected Void doInBackground(Void... voids) {
Properties properties = new Properties();
properties.put("mail.smtp.host", "smtp.gmail.com");
properties.put("mail.smtp.socketFactory.port", "465");
properties.put("mail.smtp.socketFactory.class", "javax.net.ssl.SSLSocketFactory");
properties.put("mail.smtp.auth", "true");
properties.put("mail.smtp.port", "465");
//Authentication (Utils)
session = Session.getDefaultInstance(properties, new javax.mail.Authenticator() {
protected PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication(Utils.EMAIL, Utils.PASSWORD);
}
});
MimeMessage mimeMessage = new MimeMessage(session);
try {
mimeMessage.setFrom(new InternetAddress(Utils.EMAIL));
mimeMessage.addRecipients(Message.RecipientType.TO, String.valueOf(new InternetAddress(email)));
mimeMessage.setSubject(subject);
mimeMessage.setText(message);
Transport.send(mimeMessage);
System.out.println("Message sent!");
} catch (MessagingException e) {
e.printStackTrace();
}
return null;
}
}
UTILS.java
public class Utils {
//This is the FROM email
public static final String EMAIL = "";
//This is the FROM email PASSWORD
public static final String PASSWORD = "";}