Punta de Choros

27 декември 2009

На 2009г й оставаха 120ч съществуване. От календара падна поредния лист с дата 27 декември и към 10.30ч сутринта ме събуди звън от телефона.

Инсталация на Microsoft шрифтове в Ubuntu 16.04

14 януари 2017

нсталация на Microsoft шрифтове в Ubuntu се поражда от идеята браузърите в различните системи, да показват еднакво текстовото съдържанието на интернет страниците.

Ubuntu 16.04 инсталация на USB disk on Key

19 ноември 2016

Арсеналът ми от мобилни компютри съдържа Fujitsu Lifebook AH530. Това е бюджетна машина от 2011г на Intel Core i5-480M процесор и 4GB DDR3 RAM памет.

gparted

Paragon ExtFS for Windows

30 юли 2016

ExtFS for Windows е утилита на Paragon Software разработена през 2013г. Тя представлява решение, предоставящо пълен достъп на четене и на запис до раздели ...

msvcr100.dll is missing Windows 10

04 октомври 2016

Майк Патерсън от Plixer, компания по компютърната сигурност, публикува доклад , че Windows 10 изпраща данни в криптиран вид от вашата машина на всеки пет минути. Той е направил максимума, за да спре изтичането, но системата продължавала да изпраща информация.

mailer
phpinfo() връща това:

SMTP = localhost
smtp_port = 25
sendmail_from = no value
sendmail_path = /usr/sbin/sendmail -t -i

Конзолата показва това:

profruit@prodesktop:~$ echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games
profruit@prodesktop:~$ which sendmail
/usr/sbin/sendmail


test.php е PHP скрипт за изпращане на e-mail и команда ls -la връща това:
-rw-r--r-- 1 profruit profruit 2358 2012-01-06 20:17 test.php

-----------------------

Функция за изпращане на e-mail в PHP
mail — Send mail

mail ($to , $subject , $message [, $additional_headers [, string $additional_parameters ]] )

$to - до кого е писмото
$subject - заглавие на писмото. Никакви \n или \r в тази част, филтрация в формата на същите!
$message - съдържание на писмото. Редовете трябва да се разделят в Unix-стил (LF).
headers - опционални заглавки

функцията връща true при успех или false

-----------------------

$to = "somebody@abv.bg";
за един получател

$to = "somebody@abv.bg, nobody@abv.bg";
Получател: somebody@abv.bg, nobody@abv.bg
масов е-мейл, който може да се спамира от всеки един

-----------------------

Заглавки

Oт кого е писмото
$from = "you@example.com";

форматирането допуска и такова представление. Възможен проблем на Windows машина. Съвет - опитай.
$from = "James Bond <you@example.com>";

$headers = "From: {$from}\n";

експериментално \r\n, ако няма проблем само \n;
Без тази заглавка писмата идват подписани от www-data (Това е Apache, важи за Debian системи).

-----------------------

В случай, че искаш препратка от получателя на друг твой адрес, то преправи $from.
Указва още да препраща на уеб-мастера, а не на пощенския робот.
$headers .= "Reply-To:{$from}\n";

-----------------------

Карбон копие. Копие до кого. Позволява HTML-формат.
//$headers .= "Cc: {$to}\n";

Скрито (сляпо карбон) копие до кого. Работи като Cc.
//$headers .= "Bcc: {$to}\n";

-----------------------

Какво го праща?
Заглавка с Х в началото указва, че са собствени, добавени от уеб-мастера
$headers .= 'X-Mailer: PHP/'.phpversion()."\n"

-----------------------

MIME версия. Препоръчително да се указва.
$headers .= "MIME-Version: 1.0\n";

-----------------------

Тип съдържание:
text/plain - обикновен текст и е по подразбиране.
text/html - писмото съдържа html тагове

$headers .= "Content-Type: text/plain; charset=utf-8";

-----------------------

Кога е изпратено писмото.
$headers .= "Date: " . date('r', time()) . "\n";

-----------------------

Urgent message! Важност на съобщението (3 по подразбиране)
$headers .= "X-Priority: 1\n";

-----------------------

Важно.
Последния $headers не съдържа "\n", защото се прибавя от PHP. Свършва секция head и започва body на писмото.

В PHP има зададена константа PHP_EOL (string) и PHP.net по въпроса пише така:
The correct 'End Of Line' symbol for this platform. Available since PHP 4.3.10 and PHP 5.0.2

Ако не сте наясно на какъв сървър ще бъде вдигнат php скрипта ползвайте PHP_EOL. PHP определя системата и съответно слага \r\n за dos & windows или \n за *nix сървър.

Препоръчително да се работи с \r\n според http протокола.
На помощ RFC 2822.

-----------------------

Пример за изпращане на прост e-mail

система: Ubuntu 10.04
име: prodesktop
MTA агент: Exim 4
SMTP сървър: Google
PHP функция: mail()

<?php
//header('Content-Type:text/html; charset=UTF-8');

 $to = "Profruit <somebody@domain.com>";
 $subject = "Е-мейл тест от локалхост";
 $message = "Това е тест";
 //$message = wordwrap($message,70);
 $from = "James Bond <nobody@domain.com>";
 
 $headers = "From: {$from}\n";
 $headers .= "Reply-To: {$from}\n";
 $headers .= "Return-Path: {$from}\n";
 $headers .= "Cc: {$to}\n"; 
 $headers .= "Bcc: {$to}\n";
 $headers .= "X-Mailer: PHP/".phpversion()."\n";
 $headers .= "MIME-Version: 1.0\n";
 $headers .= "Content-Type: text/plain; charset=utf-8\n";
 $headers .= "Date: " . date('r', time()) . "\n"; //strftime("%T", time())
 $headers .= "X-Priority: 1"; 
 
 $success = mail($to, $subject, $message, $headers);
 echo $success ? 'писмото изпратено' : 'грешка!';

Писмото изпратено успешно.

писмо

заб. Koko e James Bond. Разни шапшали ми пращат спам и промених текущите имена.

Детайли на заглавките:

Return-Path: <рrоfruit@gmail.com>
Delivered-To: profruit@domain.bg
Received: from mail-ey0-f180.google.com (mail-ey0-f180.google.com [209.85.215.180]) by pmx.abv.bg (Postfix) with ESMTP id 94FA118FA34 for ; Sat, 7 Jan 2012 12:13:31 +0200 (EET)
Received: by eaac11 with SMTP id c11so1311057eaa.25 for ; Sat, 07 Jan 2012 02:13:31 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=date:message-id:to:subject:x-php-originating-script:from:reply-to :cc:x-mailer:mime-version:content-type:x-priority; bh=oSq5bRi/ujGh8xp0oWkf8au+BjmEnpiHhcFjACqHBFM=; b=F91FmiM4xLulgqiM4KBTCNKOfv/25sDINJA0G7931wEiA9khCxfz5YM1MoFgdGPSyI GrqQ5YM8y/8d7C4I/0hGBYAyWGcsERNQQ7PXraMHWyw1iOI2bdHpe84K0jh6tEG3UGsz 50K1EfWQXeXnFu8j4L2/JWWh3WY6tOmgEz2q0=
Received: by 10.213.19.203 with SMTP id c11mr225648ebb.96.1325931211376; Sat, 07 Jan 2012 02:13:31 -0800 (PST)
Received: from prodesktop (IGLD-84-229-191-146.inter.net.il. [84.229.191.146]) by mx.google.com with ESMTPS id a60sm259955587eeb.4.2012.01.07.02.13.27 (version=TLSv1/SSLv3 cipher=OTHER); Sat, 07 Jan 2012 02:13:30 -0800 (PST)
Received: from www-data by prodesktop with local (Exim 4.71) (envelope-from ) id 1RjTHB-0000uW-3R; Sat, 07 Jan 2012 12:13:25 +0200
Date: Sat, 07 Jan 2012 12:13:25 +0200
Message-Id:
To: Profruit
Subject: Е-мейл тест от локалхост
X-PHP-Originating-Script: 1000:test.php
From: =?UTF-8?B?0JrQvtC60L4=?= <рrоfruit@gmail.com>
Reply-To: Коко
Cc: Profruit
X-Mailer: PHP/5.3.2-1ubuntu4.11
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8Date: Sat, 07 Jan 2012 12:13:24 +0200
X-Priority: 1


По този начин се узнава:
кой е smpt;
името на машината на изпращача;
името на интернет-провайдъра на машината;
IP-то на машината;
версия ОС-ма;
версия MTA;
версия PHP;
името на PHP скрипта;
час, дата и зона.

Чете се адреса до кого е изпратено копие от Сс заглавката. Същото важи и за Bcc.
По-добре без Cc и Bcc, защото са потенциал за мейл-инжекция.

-----------------------

Mass e-mail

Регистрацията на потребители става в таблица users. Извличат се всички адреси. Цикъл while() последователно обхожда адресите и праща писмо с едно и също съдържание до всеки потребител.

sql table
 $sql = 'SELECT `users`.`email` FROM `db_name`.`users`';
 $sql .= ' ORDER BY `user_id` ASC';

$result = mysql_query($sql);
    
while($row = mysql_fetch_assoc($result))
    {
      $to = $row['email'];
      if(mail($to, $subject, $message, $headers))
        {echo "<p>Писмото изпратено до $to</p><br />";}
      else 
        {echo '<p>Неуспешно до $to!</p>';}
    }






до нови срещи   ^.^

07.01.2012 profruit 

0 Response to "Функция mail()"

Публикуване на коментар

Този блог е реинкарнация на първите ми опити за споделяне в нета. На времето започнах с къси разкази на преживяното. После се обезсмисли и превърнах блога си в системно радио. Пиша единствено неща, които карат душата ми да живее: Ubuntu, WEB, Photoshop, Фотография, Споделено и т.н. Това е моето системно радио, разбирате ли? Моята вълна и вие сте на нея сега.

Архив на блога