我的PHP脚本无法向Mailhog客户端发送消息。我使用的是Slim PHP框架。以下是我尝试的方法:-
容器已启动并运行,并设置了sendmail路径:
x1c 0d1x的数据
docker exec -it php cat /usr/local/etc/php/conf.d/local.ini
error_reporting=E_ALL
sendmail_path="mhsendmail --smtp-addr=mailhog:1025"
字符串
本地安装的Sendmail sudo apt-get install sendmail
docker-compose.yaml
version: '3'
services:
#PHP Service
php:
build:
context: .
dockerfile: Dockerfile
container_name: php
restart: unless-stopped
tty: true
environment:
SERVICE_NAME: php
SERVICE_TAGS: dev
working_dir: /var/www
volumes:
- ./:/var/www
- ./docker/php/local.ini:/usr/local/etc/php/conf.d/local.ini
networks:
- app-network
#Mailhog
mailhog:
container_name: mailhog
image: mailhog/mailhog
ports:
- "1025:1025"
- "8025:8025"
networks:
- app-network
型
Dockerfile
FROM php:8.1-fpm
# Copy composer.lock and composer.json
# COPY composer.lock composer.json /var/www/
# Set working directory
WORKDIR /var/www
# Install dependencies
RUN apt-get update && apt-get install -y \
build-essential \
libpng-dev \
libjpeg62-turbo-dev \
libfreetype6-dev \
locales \
libzip-dev \
zip \
jpegoptim optipng pngquant gifsicle \
vim \
unzip \
git \
curl
# Clear cache
RUN apt-get clean && rm -rf /var/lib/apt/lists/*
# Install extensions
RUN docker-php-ext-install mysqli pdo pdo_mysql && docker-php-ext-enable pdo_mysql
RUN docker-php-ext-configure gd --with-freetype --with-jpeg
RUN docker-php-ext-install gd
# Install composer
RUN curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer
RUN groupadd -g 1000 www
RUN useradd -u 1000 -ms /bin/bash -g www www
# Copy existing application directory contents
COPY . /var/www
# Copy existing application directory permissions
COPY --chown=www:www . /var/www
# Change current user to www
USER www
# Expose port 9000 and start php-fpm server
EXPOSE 9000
CMD ["php-fpm"]
型
在我的PHP脚本中:
$to = '[email protected]';
$subject = 'Hello from Ubuntu!';
$message = 'This is a Mailhog test';
$headers = "From: [email protected]\r\n";
if (mail($to, $subject, $message, $headers)) {
echo "SUCCESS";
} else {
echo "ERROR";
}
型
在到达我的端点时,脚本返回ERROR?Any idea?
1条答案
按热度按时间zpqajqem1#
使用
PHPMailer
,因为它集成了SMTP支持-无需本地邮件服务器即可发送。完整代码在这里:字符串