Вложения – Прикрепите Pdf-Файл По Динамическому Url-Адресу.

  • Автор темы SapTrare04873
  • Обновлено
  • 21, Oct 2024
  • #1

Когда я сохраняю персонализированную публикацию, я хочу отправить PDF-файл по электронной почте в виде вложения.

Я попробовал это:

$url = file_get_contents($url);

«myCustomUrl» не заканчивается на .pdf

Сначала я начал не ставить

wp_mail()
and I received an email with the written URl (thanks to
$url
в
$url = file_get_contents($url);
) but without the file. URL works, if I open the link, I can see my file. With
function my_custom_save_post( $post_id, $post, $update )  {

if( ! $update ) { return; }

if( wp_is_post_revision( $post_id ) ) { return; }

if( defined( 'DOING_AUTOSAVE' ) and DOING_AUTOSAVE ) { return; }

if( $post->post_type != 'MYCUSTOMPOST' ) { return; }
$url = wp_nonce_url( admin_url( "myCustomUrl" ), 'my_nounce_name' );

$url = file_get_contents($url);

$attachments = array( $url );

$headers = 'From: My Name <[email protected]>' . "\r\n";

wp_mail( '[email protected]', 'subject', $url, $headers, $attachments );
}
add_action( 'save_post', 'my_custom_save_post', 10, 3 );
Я не получаю электронное письмо

Как это сделать, пожалуйста?

#вложения #электронная почта #wp-mail #pdf

SapTrare04873


Рег
18 Jan, 2010

Тем
87

Постов
191

Баллов
666
  • 25, Oct 2024
  • #2

Вы можете попробовать сделать это двумя способами.

Первый, гораздо более простой, — сохранить где-нибудь временный PDF-файл, например в

function my_attach_pdf( $mailer_instance ) {

$url = wp_nonce_url( admin_url( "myCustomUrl" ), 'my_nounce_name' );

$contents = file_get_contents( $url );

$mailer_instance->addStringAttachment( $contents, 'your_file_name.pdf' );
}
function my_custom_save_post( $post_id, $post, $update )  {

if( ! $update ) { return; }

if( wp_is_post_revision( $post_id ) ) { return; }

if( defined( 'DOING_AUTOSAVE' ) and DOING_AUTOSAVE ) { return; }

if( $post->post_type != 'MYCUSTOMPOST' ) { return; }

$headers = 'From: My Name <[email protected]>' . "\r\n";

add_action( 'phpmailer_init', 'my_attach_pdf' );

wp_mail( '[email protected]', 'subject', $url, $headers, $attachments );

remove_action( 'phpmailer_init', 'my_attach_pdf' );
}
add_action( 'save_post', 'my_custom_save_post', 10, 3 );
directory, use it as attachment and delete if after the call to
phpmailer_init
функция сделана:

wp_mail()

Второе — всего лишь предположение, и его необходимо проверить. WordPress полагается на

addStringAttachment
компонент для отправки электронных писем. Этот компонент имеет
PHPMailer
метод, который позволяет прикрепить двоичный объект, назначенный переменной PHP, в качестве вложения файла электронной почты. Здесь это вопрос по этой теме. Я не вижу никакого способа, которым это можно было бы использовать через
function my_custom_save_post( $post_id, $post, $update )  {

if( ! $update ) { return; }

if( wp_is_post_revision( $post_id ) ) { return; }

if( defined( 'DOING_AUTOSAVE' ) and DOING_AUTOSAVE ) { return; }

if( $post->post_type != 'MYCUSTOMPOST' ) { return; }

$url = wp_nonce_url( admin_url( "myCustomUrl" ), 'my_nounce_name' );

$contents = file_get_contents( $url );

# here temporary file name is a fixed string

# but it better to be some unique string

# (use current timestamp, post ID, etc)

$tempfile = ABSPATH . 'uploads/filename.pdf';

file_put_contents( $tempfile, $contents );

$attachments = array( $tempfile );

$headers = 'From: My Name <[email protected]>' . "\r\n";

wp_mail( '[email protected]', 'subject', $url, $headers, $attachments );

unlink( $tempfile );
}
add_action( 'save_post', 'my_custom_save_post', 10, 3 );
function but in theory you can try to do it via
wp_mail()
крюк:

uploads

Мне действительно любопытно, сработает ли второй подход. Возможно, однажды проверим это. Если вы протестируете это, пожалуйста, оставьте отзыв.

 

Олесёнок


Рег
17 Jan, 2008

Тем
76

Постов
203

Баллов
593
Тем
403,760
Комментарии
400,028
Опыт
2,418,908