mirror of
https://github.com/harness-community/drone-email.git
synced 2026-06-04 18:24:18 +08:00
CI-20805
WithTLSPortPolicy calls SetTLSPortPolicy, which checks `c.port == DefaultPort`
(25) to decide whether the port was explicitly set or left as default. When a
user configures port 25 — common for internal relay hosts that accept plaintext
SMTP — the guard condition evaluates true and the library silently overrides the
port to 587 (DefaultPortTLS) with a fallback to 25.
This causes a two-stage failure in environments where port 587 is unreachable:
1. The primary dial to host:587 blocks for the full 15-second connection
timeout (go-mail DefaultTimeout) waiting on a firewalled port.
2. The fallback dial to host:25 fires with an already-expired context,
producing a misleading "lookup <host>: i/o timeout" DNS error rather
than the actual root cause (port 587 unreachable).
The previous mail library (gopkg.in/mail.v2) used the port value directly
without any policy-based override, so this regression surfaced only after
migrating to github.com/wneessen/go-mail.
WithTLSPolicy applies the same STARTTLS negotiation semantics (NoTLS or
TLSOpportunistic) without mutating the port, which is the correct choice
when the caller has already provided an explicit port via WithPort.
drone-email
Drone plugin to send build status notifications via Email. For the usage information and a listing of the available options please take a look at the docs.
Binary
Build the binary with the following command:
go build
Docker
Build the docker image with the following commands:
docker build -t plugins/email:latest .
Build the docker for ARM with buildx
docker buildx create --name mybuilder
docker buildx use mybuilder
docker buildx build --file Dockerfile.armhf --platform linux/arm64/v7,linux/arm64 -t drone-email:latest .
This will create a Docker image called plugins/email:latest.
Please note incorrectly building the image for the correct x64 linux and with GCO disabled will result in an error when running the Docker image:
docker: Error response from daemon: Container command
'/bin/drone-email' not found or does not exist..
Example
Execute from the working directory:
docker run --rm \
-e PLUGIN_FROM.ADDRESS=drone@test.test \
-e PLUGIN_FROM.NAME="John Smith" \
-e PLUGIN_HOST=smtp.test.test \
-e PLUGIN_USERNAME=drone \
-e PLUGIN_PASSWORD=test \
-e DRONE_REPO_OWNER=octocat \
-e DRONE_REPO_NAME=hello-world \
-e DRONE_COMMIT_SHA=7fd1a60b01f91b314f59955a4e4d4e80d8edf11d \
-e DRONE_COMMIT_BRANCH=master \
-e DRONE_COMMIT_AUTHOR=octocat \
-e DRONE_COMMIT_AUTHOR_EMAIL=octocat@test.test \
-e DRONE_BUILD_NUMBER=1 \
-e DRONE_BUILD_STATUS=success \
-e DRONE_BUILD_LINK=http://github.com/octocat/hello-world \
-e DRONE_COMMIT_MESSAGE="Hello world!" \
-v $(pwd):$(pwd) \
-w $(pwd) \
plugins/email
Description
Languages
Go
98.9%
Shell
0.6%
Makefile
0.5%