Outlook emails sent to invalid email with URL in them get clicked - email

We are deploying an app where after signing-up you receive an email to a URL with a token that will call an API that simply switches a bool in the DB called confirmed. There is no other way to alter this bool other than through this API.
We recently switched our gmail smtp to an outlook365 one and discovered that any email that is invalid gets this boolean toggled. To be more specific I've noticed that there are two types of invalid emails:
One where we receive an email from Microsoft Outlook
Your message to test#whatever.com couldn't be delivered.
test wasn't found at whatever.com.
and another where we receive the same email from postmaster#officedepot.onmicrosoft.com
Only the ones received from postmaster are getting validated.
I believe the links are somehow automatically being called?
Could anyone validate my theory?

Related

Jira email notifications not working, but test e-mail is working

We have an on-premise hosted Jira 6.0.8. We have set up an outgoing mail server using a Gmail account and used the send test e-mail feature to successfully send an e-mail out.
Our problem is with e-mail notifications. We are not getting any at all. We have gone through troubleshooting docs https://confluence.atlassian.com/jirakb/troubleshoot-notifications-in-jira-203394737.html here but have not been able to find the solution.
Here is what we have already tried;
Ensured user profile 'My Changes setting' was set to 'Notify Me'
Ensured Notification scheme was correct and associated with the project
Ensured Project Notification email was set to the same as the outgoing mail server Gmail address
Checked the 'Mail Queue' after making a comment on an issue and saw waiting messages in it for the correct issue. These then disappeared from the queue without error within 60 seconds, indicating that they had been sent.
Enabled DEBUG logging under 'Logging and Profiling' for the outgoing mail server and com.atlassian.jira.service and com.atlassian.jira.service.services.DebugService. We reviewed the log file and saw nothing that indicated error but did see the log of the MailqueueService sending the e-mail.
have used the 'Notifcation Helper' tool and it verified that the user would receive the appropriate notification indicating notifcation scheme and permission are set up ok.
Still the notification e-mail is not received.
There was a point made in the troubleshooting link above
Check that your Base URL is set to a domain / IP which your SMTP server will accept. Example: Google apps accounts must have a matching base url to their Google Apps domain.
However, our Adminsistration> System>General Configuration>Base Url for Jira is something like http://myservername:8880 since it is internal self-hosted. This did not cause a problem with the test mail. Could this be an issue for the notification e-mails?
Any help would be greatly appreciated.

Mailbox unavailable. The server response was: This domain is not hosted here

I am performing some tests on my Nopcommerce site that should allow the user to type a message in to the contact box of the site and that message should be sent by email to a user.
When setting up and testing said user on the site, I am able to perform an email test against an internal email address and this works fine, I receive the email. However, if I try and send the email to an external email address, such as hotmail etc, I receive no error logs at all.
Has anyone ever come across this issue when trying to set up an email on a Nopcommerce site?
I am using port 25 however I have tried to use port 587 with no luck
The answer was that the username and password no longer existed for the server I was sending mail from. Moreover, another issue I had was that the mail still wasn't sending and was sitting in the Message queue. To overcome this I had to make sure that the bindings for the site on IIS were identical to the host values on the site. Doing this allowed me to send mail.

Disable javamail email address validation

Id like my application to have bare minimum 'To' email address validation, that is only empty string is considered to be invalid. All the below strings are to be considered as valid email addresses from my application perspective:
adas.assa.com
sdaassa.com
sada
Im using spring-boot-mail starter to develop my application, and MimeMessageHelper to construct the mail message. And java mail api would issue sendFailedException Invalid Address, when I tried to send email to those addresses. From my digging it seems that there are already built in email address validations. Is there any way that I can disable the email address validations, so that my application still send email to those addresses?
Update since #Bill Shannon:-
I've updated my properties file as so:
spring.mail.properties.mail.mime.address.strict=false
Im still getting the error:
org.springframework.mail.MailSendException: Failed messages:
javax.mail.SendFailedException: Invalid Addresses;
nested exception is:
com.sun.mail.smtp.SMTPAddressFailedException: 501 5.1.3 Invalid address
Im not sure if it has to do with how I pass the session properties as you #Bill mentioned, or coming from exhange server address validation(can we tell from the error?).
Update after checking with exchanger server admin.
It works. The error received actually issue by email server. You have to get your email server to disable email address validation to make it work.
Try setting the Session property mail.mime.address.strict to "false". Still, it's up to your mail server whether it will accept those addresses.

How to make sure that the email was sent in yii2?

In my project when the user stored a new record to database, sent to him email with to perform afterSave() Method.
How to make sure that the email was sent?
I don't think this is something to do with yii2 or the afterSave() event (as long as the afterSave event is triggered, which you can verify by Runtime Logging for example). When using PHPMailer class you can see this discussion about making sure an email has been sent.
$mail->send() will not always return true. It returns true if the part of the sending process it was involved with works. So if you send to an unknown address, but do so via gmail, gmail's servers don't know whether the address exists or not at the time, so it will be accepted and bounced later. If you were sending to a gmail address when sending through gmail, then it would fail immediately.
If an account does not exist at all, most servers (including gmail) will still give a 5.1.1 "Unknown user" response, and that will be reported correctly by PHPMailer if you send by SMTP directly to the recipient's supposed mail server (but not if you send via an intermediate server (like gmail) or using mail()). PHPMailer doesn't have built-in support for doing that, but doing it yourself only involves a call to getmxrr and setting Host manually. Also you won't need to use authentication if you send that way.
You can do various things like check if a domain exists at all - if it doesn't, mail delivery won't work. Some servers will accept all addresses and send bounces later (e.g. if they have a spam filter with a long processing queue), but if you get rejected up-front, it's a pretty sure indication that the address doesn't exist.
You need to look into bounce handling too which will allow you to remove addresses that looked ok but later proved not to be, which is an entirely separate thing from anything that PHPMailer does. I will warn you now - bounce handling is extremely unpleasant!
You should also send using tls on port 587, not ssl on 465; see the gmail example provided with PHPMailer.
I would also recommend you to send mails via an SMTP auth connection trough PHPMailer.

How do I build a notification email/reply system like Facebook?

When users receive a notification email about a new private message on Facebook, they can reply to the email and have their response automatically added to the conversation on the site.
How can I build a cross platform system like that? I'm building a group chat system.
This is obviously way over-simplified, but here we go:
The way Facebook's emails work is by using a string that's unique to the receiver in the reply-to address:
<m+50edqb50000003jtdj389k6xib6hofj6t41q1c45sdt92qc#reply.facebook.com>
So when Facebook receive an email into reply.facebook.com, they (presumably) parse the string after the plus sign, decide which user/conversation it's relevant to, and add the text of the email into that conversation.
One option:
Send every notification email with a unique reply-to address, then receive replies with a customized SMTP server that will pair responses with the originating message object in your DB.
Since you are using django (according to your tags) I would recommend looking at the Lamson python SMTP server. It can be programmed to correctly attribute each message. Using Lamson with Django is documented.