e2a: add E2A Email plugin 0.0.1 - #2846
Merged
Merged
Conversation
crazywoola
previously approved these changes
Aug 10, 2026
crazywoola
left a comment
Member
There was a problem hiding this comment.
✅ LGTM
Decision: Approve
Local Check Results
| Check | Status | Detail | Required action |
|---|---|---|---|
PR content language |
✅ Pass | PR title/body CJK ratio=0.0% (zh=0, en=2675, ignored_zh=0, allowed_zh<=0) | None. |
Project structure |
✅ Pass | All expected files present: manifest.yaml, README.md, PRIVACY.md. _assets/: yes. | None. |
Manifest author |
✅ Pass | author is valid. | None. |
Icon validation |
✅ Pass | icon exists: _assets/icon.svg | None. |
Version check |
✅ Pass | version 0.0.1 is available. | None. |
README language |
✅ Pass | README.md CJK ratio=0.0% (zh=0, en=2054, allowed_zh<=0) | None. |
PRIVACY.md |
✅ Pass | PRIVACY.md exists and is non-empty. | None. |
Dependency install |
✅ Pass | requirements installed successfully. | None. |
dify_plugin version |
✅ Pass | dify_plugin version 0.10.1 satisfies >= 0.9.0. | None. |
Install test |
✅ Pass | plugin install test passed. | None. |
Packaging test |
✅ Pass | packaging check passed. | None. |
jiashuoz
marked this pull request as ready for review
August 10, 2026 03:23
crazywoola
dismissed
their stale review
August 10, 2026 09:56
Superseded by a fresh full review of all open PRs on 2026-08-10.
crazywoola
approved these changes
Aug 10, 2026
crazywoola
left a comment
Member
There was a problem hiding this comment.
✅ LGTM
Decision: Approve
Local Check Results
| Check | Status | Detail | Required action |
|---|---|---|---|
PR content language |
✅ Pass | PR title/body CJK ratio=0.0% (zh=0, en=2675, ignored_zh=0, allowed_zh<=0) | None. |
Project structure |
✅ Pass | All expected files present: manifest.yaml, README.md, PRIVACY.md. _assets/: yes. | None. |
Manifest author |
✅ Pass | author is valid. | None. |
Icon validation |
✅ Pass | icon exists: _assets/icon.svg | None. |
Version check |
✅ Pass | version 0.0.1 is available. | None. |
README language |
✅ Pass | README.md CJK ratio=0.0% (zh=0, en=2054, allowed_zh<=0) | None. |
PRIVACY.md |
✅ Pass | PRIVACY.md exists and is non-empty. | None. |
Dependency install |
✅ Pass | requirements installed successfully. | None. |
dify_plugin version |
✅ Pass | dify_plugin version 0.10.2 satisfies >= 0.9.0. | None. |
Install test |
✅ Pass | plugin install test passed. | None. |
Packaging test |
✅ Pass | packaging check passed. | None. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Plugin Submission
Plugin information
Submission type
What changed
Adds an E2A Email tool plugin for Dify. An agent-scoped API key binds the
plugin to one authenticated inbox and exposes five bounded operations:
whoami,list_messages,get_message,send_message, andreply_to_message. Replies use the source message endpoint to preserveemail threading, and human-review holds are returned as successful held
outcomes that must not be resent.
Risk level
The plugin processes email addresses and message content and can send or reply
to email through the fixed
https://api.e2a.devAPI.Required checks
.envfiles,.gitdirectories, virtual environments, caches, logs, or IDE files.PRIVACY.mdor a hosted privacy policy, andmanifest.yamlreferences it.Security and privacy notes
The plugin handles email addresses, message content, and an agent-scoped API
credential. It can send new email and threaded replies. It sends data only to
the fixed documented E2A HTTPS API, accepts no arbitrary URL, executes no code
or commands, performs no filesystem operations, and stores no plugin data.
Credentials and server response bodies are excluded from error messages.
Local validation
pytest -q: 36 passed.failures. It reports one non-blocking static-analysis warning category from
generic keyword checks; review found those matches to be false positives in
declarative plugin metadata and bounded request code.
compilation, safety, and prohibited-financial-activity checks passed.
Reviewer notes
The plugin was not installed against Dify Community Edition or Dify Cloud in
this environment. Tool/provider wiring is covered with the official
dify-pluginruntime package and mocked HTTP-boundary tests. No live E2A sendwas attempted because that would require production credentials and external
side effects.
The Plugin Developer Agreement checkbox remains open for the human contributor
to confirm before this draft is marked ready for review.