The GUI should allow a custom “To:” Name for notification emails.
1 Like
Following up. Not having a “To:” name makes emails generated by Gravity Forms look very unprofessional before the user has even opened the email.
Point taken about having this option be in the UI. I opened a feature request for this issue.
It is possible to accomplish right now, using the gform_pre_send_email filter. Here is the code I added:
add_filter( 'gform_pre_send_email', 'before_email_3211', 10, 4 );
function before_email_3211( $email, $message_format, $notification, $entry ) {
// apply only to submissions for form 366
// you can check by notification name as well if you needed to
if ( rgar ( $entry, 'form_id' ) == 366 ) {
GFCommon::log_debug( __METHOD__ . '(): Original email => ' . print_r( $email, true ) );
// you can set this dynamically based on values submitted in the form, using the $entry
// I just set it statically to test the format
$email['to'] = '"Chris Hajii Gomeshi" <chrishajer+3211@gmail.com>';
GFCommon::log_debug( __METHOD__ . '(): Modified email => ' . print_r( $email, true ) );
return $email;
}
}
That mail was delivered - here is a screenshot of the delivery information from my Gmail client:
How would I modify your code in order to target a specific notification and use a Name Field from the form + the original email address? I know your comments indicate that this is possible, but I’m not sure exactly how to adjust your example.
Try like this:
add_filter( 'gform_pre_send_email', 'before_email_3211', 10, 4 );
function before_email_3211( $email, $message_format, $notification, $entry ) {
// apply to one specific notification by name
// change the name to your own unique notification name
if ( $notification['name'] == 'Admin Notification 3211' ) {
// grab the first and last name from the entry, field 1 in my form; update to your field ID
$first_name = rgar ( $entry, '1.3' );
$last_name = rgar ( $entry, '1.6' );
// uses the name from the form and the original $email['to']
$email['to'] = "\"{$first_name} {$last_name}\" <{$email['to']}>";
return $email;
}
}