Як вставити зображення в php mail?

Як я можу вставити зображення у форму електронної пошти php?

У мене є цей код:

$headers  = 'MIME-Version: 1.0' . "\n";
        $headers .='Content-Type: text/html; charset="UTF-8"'."\n";
        $headers .='From: [email protected]';       
        $image = "http://lcda.fr/site/abonnement/img/logo.png";
        //ecriture du message 

        $message .= '';
        $message .= '

Votre commande a bien été enregistrée sous le numéro/ Your command has been successfully recorded under the number : (ref - '.$_SESSION['refvb'].')

'; $message .= '<table width="500">'; $message .= '<tr><th colspan="2" align="left">Informations abonnement/ Subscription informations :</th></tr>'; $message .= '<tr><td width="250">Abonnement/ Subscription : </td><td>'.$infoabo['abo'].'</td></tr>'; $message .= '<tr><td>Durée/ Duration : </td><td>'.$infoabo['duree'].' an(s) </td></tr>'; $message .= '<tr><td>Quantité/ Quantity : </td><td>'.$infoabo['quantite'].'</td></tr>'; $message .= '<tr><td>Localisation/ Localisation : </td><td>'.$infoabo['zone'].'</td></tr>'; $message .= '<tr><td>Prix/ Price : </td><td>'.$infoabo['prix'].' €</td></tr>'; $message .= '<tr><td>Commencer l\'abonnement au prochain numéro/ Start the subscription in the next issue : </td><td>'.$startabo.'</td></tr>'; $message .= '</table>'; } $message .= '

Mode de paiement/ Payment : '.$mode; $message .= '

'; $message .= ''; //envoie du mail ini_set("sendmail_from",'[email protected]');

Але образ не завантажується? Чи є інший спосіб зробити це? (справа полягає в тому, щоб поставити логотип компанії, де розміщено зображення)

0

10 Відповіді

Ваше зображення має розміщуватися на загальнодоступній URL-адресі, яка потім використовується в повідомленні електронної пошти

Наприклад

$image = 'http://cdn.mydomain.tld/image.png';    

Оновити:

Як повідомляє swapnesh (тому кредит на нього), конкатенація рядка неправильна (хоча його виправлення неправильна), тому ваш $ image шлях не буде у вашому рядку.

Тобі потрібно

// correct
$string = ''; //=> 

// wrong
$string = ''; //=> 

Зверніть увагу на додаткові одиничні лапки у вашому рядку. Ви не вириваєтеся з рядка, щоб додати змінну, і оскільки основний рядок укладено в одинарні лапки, PHP не розібрати його для інтерполяції.

4
додано
Так, але у вашому прикладі коду $ image не містить URL-адреси лише назви зображення
додано Автор fullybaked, джерело
Можливо, це не питання, але ваш поштовий клієнт не блокує зображення? Якщо ви переглядаєте джерело електронної пошти, це правильно?
додано Автор fullybaked, джерело
Відповідь на це питання див
додано Автор fullybaked, джерело
Саме це. Крім того, ви повинні додати атрибут "alt" до вашого зображення, оскільки він не буде завантажений за замовчуванням більшістю (усі?) Провайдерів електронної пошти.
додано Автор Cyrille Armanger, джерело
Так, вибачте .. Я писав повідомлення, коли я пам'ятаю, що він не може працювати, тому що не мають повного посилання, і я намагаюся з повним посиланням, але я забув змінити його тут .. Не працює з повним посиланням також. .
додано Автор Alpha, джерело
Я не думаю, що так як я намагаюся в декількох хостах електронної пошти, але так, я бачу код правильно і тепер, коли я додав атрибут "alt", я бачу його ...
додано Автор Alpha, джерело
Я маю повний шлях .. У мене є посилання: lcda.fr/site/abonnement/ img/logo.png
додано Автор Alpha, джерело

Ви повинні надати повну адресу URL у вашій змінної $ image.

Подобається ця $ image = " http://yourdomain.com/images/image_name.ext "

3
додано

Вкажіть Абсолютний шлях зображення в електронній пошті.

Також вилучіть . , якщо $ message раніше не існує -

$message = '';

І так правильно -

$message = "";
2
додано
@fulbaked thx для вказівки на помилку людини ... редагування зроблено
додано Автор swapnesh, джерело
@fullybaked lol Я читав це stackoverflow.com/questions/14069231/… так переплутав .... після downvote я знову зазирну в код і знайшов . помилку :)
додано Автор swapnesh, джерело
@swapnesh, хоча ваш поточний редагування працюватиме, він не дасть дійсного html, оскільки він не оберне URL-адресу зображення в "
додано Автор fullybaked, джерело
Вам потрібно буде використовувати лише різні типи вмісту в електронній пошті з вбудованими зображеннями як окрему частину. Зміст опублікованого ОП є text/html. Незважаючи на те, що ви вказали правильно (і я пропустив), що конкатенація рядка неправильна для $ image , але не зовсім правильно, як це виправити
додано Автор fullybaked, джерело
якщо я це роблю, то це не буде гвинт решти пошти?
додано Автор Alpha, джерело

Спробуйте використати повний шлях до зображення. тому:

 www.example.com/site/images/link.png
1
додано
Спробуйте .jpg, це може бути проблема з .png
додано Автор user2067005, джерело
Зробіть зображення змінним: $ image = ' lcda.fr/site/abonnement/img /logo.png' ;;
додано Автор user2067005, джерело
Я маю повний шлях .. У мене є посилання: lcda.fr/site/abonnement/ img/logo.png
додано Автор Alpha, джерело

Переконайтеся, що шлях зображення є абсолютним і доступним для користувача, який намагається переглядати його таким чином:

http://www.google.com/image.png

1
додано
Я маю повний шлях .. У мене є посилання: lcda.fr/site/abonnement/ img/logo.png
додано Автор Alpha, джерело
Добре, тепер встановіть вашу змінну $ image в таку: $ image =
додано Автор Hugh Downer, джерело

Радий, що ви вирішили його. Просто щоб пролити світло для інших людей: Це була проблема котирування.

Це одна з ваших спроб:

$message .= '';

In PHP, double and single quotes behave differently. When opening single quotes, everything will be taken as-is. So there will be no parsing of the variable $image. Hence inside your mail source code you will read: which of course can't work.

Якщо ви хочете, щоб змінна була розпізнана як змінна і проаналізована, ви повинні закрити одинарні лапки перед змінною. Це можливість:

$message .= '';

Тут PHP не зробить синтаксичного аналізу, просто записує все в одинарні лапки, включаючи подвійні лапки (що є розумною частиною), потім залишимо цитату і PHP розбирає знову, тому розпізнає змінну і додає свій вміст. Потім (як ми знову вводимо одну цитату) PHP записує все всередині, знову ж таки з подвійною цитатою. Таким чином, ви отримаєте те, що ви хочете:


(Зверніть увагу на відмінність від вашої першої версії:

$message .= '';

where you also do not close the single quotes before the variable. So in this case in your mail source code you will read: )

Все це трохи складно, оскільки при використанні подвійних котирувань змінні будуть проаналізовані за допомогою PHP всередині лапок. Але як тільки ви хочете видавати подвійні лапки як частину рядка (не пізніше), це може бути досить заплутаним - і окремі лапки (які набагато більш суворі) можуть бути легше зрозуміти .

Сподіваюся, що це допомагає Привіт! е

1
додано

ВИРІШЕНО ПИТАННЯ.

Зробіть зображення вашим:

$image = 'http://lcda.fr/site/abonnement/img/logo.png';
0
додано

Ваш $ image повинен мати абсолютний URL;  Спробуйте відредагований код нижче;

    $headers  = 'MIME-Version: 1.0' . "\n";
    $headers .='Content-Type: text/html; charset="UTF-8"'."\n";
    $headers .='From: [email protected]';       
    $image = "http://framework.zend.com/images/head-bottom-picture.png";
    //ecriture du message 

    $message .= '';
    $message .= '

Votre commande a bien été enregistrée sous le numéro/ Your command has been successfully recorded under the number : (ref - '.$_SESSION['refvb'].')

'; $message .= '<table width="500">'; $message .= '<tr><th colspan="2" align="left">Informations abonnement/ Subscription informations :</th></tr>'; $message .= '<tr><td width="250">Abonnement/ Subscription : </td><td>'.$infoabo['abo'].'</td></tr>'; $message .= '<tr><td>Durée/ Duration : </td><td>'.$infoabo['duree'].' an(s) </td></tr>'; $message .= '<tr><td>Quantité/ Quantity : </td><td>'.$infoabo['quantite'].'</td></tr>'; $message .= '<tr><td>Localisation/ Localisation : </td><td>'.$infoabo['zone'].'</td></tr>'; $message .= '<tr><td>Prix/ Price : </td><td>'.$infoabo['prix'].' €</td></tr>'; $message .= '<tr><td>Commencer l\'abonnement au prochain numéro/ Start the subscription in the next issue : </td><td>'.$startabo.'</td></tr>'; $message .= '</table>'; } $message .= '

Mode de paiement/ Payment : '.$mode; $message .= '

'; $message .= ''; //envoie du mail ini_set("sendmail_from",'[email protected]');
0
додано

Очевидно, це працює, якщо я поклав посилання безпосередньо в тег "img" .. Дякую

0
додано

Я зробив наступне, на основі інших відповідей:

$comments .= "
logo
";
$comments .= $mail; /*message posted from textarea box on associated htmlpage.*/
$sent = mail($tosubscriber,$subject,$comments,$headers);
0
додано
Ukrainian PHP comunity
Ukrainian PHP comunity
885 учасників

dev-ua/php