Support

Home Forums Event Espresso Premium Confirmation Emails are Not Reaching Customer after Ticket Purchase

Confirmation Emails are Not Reaching Customer after Ticket Purchase

Posted: July 8, 2020 at 4:49 pm


fuzzyminds

July 8, 2020 at 4:49 pm

I am using our EE4 Everything license, and setup is complete; we’re in test mode at this time hoping to go live with some events for the fall. We were hoping to go live today, but ran into this unexpected issue.

When we tested the registration for one of the events we have setup, the confirmation message states an e-mail has been sent. Notwithstanding this, the e-mail never arrived. We have performed this test a couple of times, and still no e-mails arrive.

To manage the site’s SMTP functions, we’re using the WP Mail SMTP plugin which is integrated with Amazon SES. All our regular messages / site notifications from other plugins are going out okay. The website is part of a WP multi-site installation, hosted on one of our Amazon EC2 instances. The mail client connects to an Office 365 exchange server to retrieve e-mail messages.

We:
– Confirmed in WP Mail SMTP log, messages went out.
– Confirmed messages are not in mail client In-box or Junk folder.

From a Google search I found this 2016 forum post:
https://eventespresso.com/topic/email-sending-doesnt-work-with-ses/

which suggests we need to create a modification to the functions.php file to accommodate.

***********
add_filter( ‘FHEE__EE_Email_messenger___headers’, ‘my_remove_mime_type_from_ee_email_headers’, 10 );
function my_remove_mime_type_from_ee_email_headers( $headers ) {
array_shift( $headers );
return $headers;
}
*******************

I see that I am not the only one with this issue recently, as this post reflects a similar issue:
https://eventespresso.com/topic/emails-are-not-sending-after-ticket-purchase/

I’m assuming where WP Mail SMTP logs reflects the e-mails leaving the server, this is another case of SES rejecting the messages due to the double header issue, per the referenced forum post. Would that be a safe assumption?

If so, is the proposed code insertions into the functions.php file still the best solution / resolution?

If not, any suggestions?


fuzzyminds

July 8, 2020 at 5:02 pm

As one additional point of clarification / background information, e-mail has been flowing into the e-mail client all day without issue from other sources, as well as other site notifications being dispatched by WP Mail SMTP plugin / Amazon SES.

In light of this, we ruled out an issue between Amazon SES and Office 365 Exchange server.


Tony

  • Support Staff

July 9, 2020 at 5:05 am

Hi there,

When we tested the registration for one of the events we have setup, the confirmation message states an e-mail has been sent. Notwithstanding this, the e-mail never arrived. We have performed this test a couple of times, and still no e-mails arrive.

So the email shows as sent in EE and has a green status bar (the coloured bar to the left)?

If so, then EE generated the email and passed it over to wp_mail() which did not return any errors. So as far as EE has control over, EE ‘sent’ the email as expected and no errors were thrown.

I see that I am not the only one with this issue recently, as this post reflects a similar issue:
https://eventespresso.com/topic/emails-are-not-sending-after-ticket-purchase/

Unfortunately, you’ll find many different threads for email issues as there are lots of different email configs. Many users use their hosts own mail server to send the emails which is where the majority of issues come from.

I’m assuming where WP Mail SMTP logs reflects the e-mails leaving the server, this is another case of SES rejecting the messages due to the double header issue, per the referenced forum post. Would that be a safe assumption?

Safe, yes, but without the error being thrown (which apparently isn’t all that simple to pull from SES) you can’t be sure.

It depends on what was setting the additional MIME-Versionheader in the original thread, EE sets it onceMIME-Version` and then something else added it again in the previous thread.

The quickest way to test if this is the problem on your site is to add the code referenced above and run another test, if it works it was the MIME-Version header (as that is the only header that code removes). It’s not going to affect any other emails sent by your site as the hook in question runs only within Event Espresso.

You must be logged in to reply to this support post. Sign In or Register for an Account

Support forum for Event Espresso 3 and Event Espresso 4.
Documentation for EE3 and EE4
Documentation for Event Espresso 3 Documentation for Event Espresso 4

Status: publish

Updated by  Tony 3 months, 2 weeks ago ago

Topic Tags

Notifications

This topic is: not resolved
Do NOT follow this link or you will be banned from the site!
[gravityform id=80 title=false description=false ajax=false]
<div class='gf_browser_unknown gform_wrapper' id='gform_wrapper_80' ><form method='post' enctype='multipart/form-data' id='gform_80' action='/topic/confirmation-emails-are-not-reaching-customer-after-ticket-purchase/'> <div class='gform_body'><ul id='gform_fields_80' class='gform_fields top_label form_sublabel_below description_below'><li id='field_80_1' class='gfield gfield_contains_required field_sublabel_below field_description_below gfield_visibility_visible' ><label class='gfield_label' for='input_80_1' >First name<span class='gfield_required'>*</span></label><div class='ginput_container ginput_container_text'><input name='input_1' id='input_80_1' type='text' value='' class='medium' aria-required="true" aria-invalid="false" /></div></li><li id='field_80_2' class='gfield gfield_contains_required field_sublabel_below field_description_below gfield_visibility_visible' ><label class='gfield_label' for='input_80_2' >Email address<span class='gfield_required'>*</span></label><div class='ginput_container ginput_container_email'> <input name='input_2' id='input_80_2' type='email' value='' class='medium' aria-required="true" aria-invalid="false" /> </div></li><li id='field_80_3' class='gfield gfield_contains_required field_sublabel_below field_description_below gfield_visibility_visible' ><label class='gfield_label' >GDPR Agreement<span class='gfield_required'>*</span></label><div class='ginput_container ginput_container_checkbox'><ul class='gfield_checkbox' id='input_80_3'><li class='gchoice_80_3_1'> <input name='input_3.1' type='checkbox' value='I consent to have this website store my submitted information so they can respond to my inquiry.' id='choice_80_3_1' /> <label for='choice_80_3_1' id='label_80_3_1'>I consent to have this website store my submitted information so they can respond to my inquiry.</label> </li></ul></div></li><li id='field_80_4' class='gfield gform_validation_container field_sublabel_below field_description_below gfield_visibility_visible' ><label class='gfield_label' for='input_80_4' >Phone</label><div class='ginput_container'><input name='input_4' id='input_80_4' type='text' value='' autocomplete='off'/></div><div class='gfield_description' id='gfield_description_80_4'>This field is for validation purposes and should be left unchanged.</div></li> </ul></div> <div class='gform_footer top_label'> <input type='submit' id='gform_submit_button_80' class='gform_button button' value='Download Now' onclick='if(window["gf_submitting_80"]){return false;} if( !jQuery("#gform_80")[0].checkValidity || jQuery("#gform_80")[0].checkValidity()){window["gf_submitting_80"]=true;} ' onkeypress='if( event.keyCode == 13 ){ if(window["gf_submitting_80"]){return false;} if( !jQuery("#gform_80")[0].checkValidity || jQuery("#gform_80")[0].checkValidity()){window["gf_submitting_80"]=true;} jQuery("#gform_80").trigger("submit",[true]); }' /> <input type='hidden' class='gform_hidden' name='is_submit_80' value='1' /> <input type='hidden' class='gform_hidden' name='gform_submit' value='80' /> <input type='hidden' class='gform_hidden' name='gform_unique_id' value='' /> <input type='hidden' class='gform_hidden' name='state_80' value='WyJbXSIsIjBiNjdjZjkyMDUzOWUxOWY5Y2NiZjIwMzM4YjA1Mjk4Il0=' /> <input type='hidden' class='gform_hidden' name='gform_target_page_number_80' id='gform_target_page_number_80' value='0' /> <input type='hidden' class='gform_hidden' name='gform_source_page_number_80' id='gform_source_page_number_80' value='1' /> <input type='hidden' name='gform_field_values' value='' /> </div> </form> </div><script type='text/javascript'> jQuery(document).bind('gform_post_render', function(event, formId, currentPage){if(formId == 80) {} } );jQuery(document).bind('gform_post_conditional_logic', function(event, formId, fields, isInit){} );</script><script type='text/javascript'> jQuery(document).ready(function(){jQuery(document).trigger('gform_post_render', [80, 1]) } ); </script>
[i]
[i]